題目都是我遇到過的 ios 面試題,分享出來大家互相學習,有空就會補上答案,有不對的地方還請讀者指點
********************一條普通的分割線********************
當從**例項化uiview的時候,initwithframe會執行;
您定義的每個新的檢視物件都應該包含initwithframe:初始化方法。該方法負責在建立物件時對類進行初始化,使之處於已知的狀態。在通過**建立您的檢視例項時,需要使用這個方法。
當從檔案載入uiview的時候,initwithcoder會執行。
參考:
//在你的自定義物件實現nscoding協議,然後在.m裡面實現下面兩個方法
-(instancetype)initwithcoder:(nscoder *)adecoder
return
self;
}-(void)encodewithcoder:(nscoder *)acoder
//再然後用那個nskeyedarchiver就可以了
1.xml屬性列表(plist)歸檔
- 特點:只能儲存oc常用資料型別(nsstring、nsdictionary、nsarray、nsdata、nsnumber等型別)而不能直接儲存自定義模型物件
如果想儲存自定義模型物件 -> 只能將自定義模型物件轉換為字典儲存;
//plist只能識別字典,陣列
//讀寫資料 - > 例項**
nsstring *docpath =nssearchpathfordirectoriesindomains(nsdocumentdirectory,nsuserdomainmask, yes)[0];
// 拼接要儲存的地方的路徑
// 1、寫入資料
[array writetofile:filepath atomically:yes];
// 2、 讀取資料
nsarray *array = [nsarray arraywithcontentsoffile:filepath];
2.preference(偏好設定)
用法:
nsuserdefaults *userdefaults = [nsuserdefaultsstandarduserdefaults];
// 1、寫入
[userdefaults setbool:no forkey:@"islogined"];
// 強制寫入
[defaults synchornize];
// 2、讀取
bool isvisble = [userdefaults boolforkey:@"islogined"];
3.nskeyedarchiver歸檔(nscoding)
//如果父類也遵守了nscoding協議,請注意:
//應該在encodewithcoder:方法中加上一句
[super encodewithcode:encode]; // 確保繼承的例項變數也能被編碼,即也能被歸檔
//應該在initwithcoder:方法中加上一句
self = [super initwithcoder:decoder]; // 確保繼承的例項變數也能被解碼,即也能被恢復
4.sqlite3
//sql語句
//增刪改查
create
table t_student (id integer, name text, age inetger, score real) ;
select * from t_student where age > 10 ; // 條件查詢
select * from t_student limit 4, 8 ; // 可以理解為:跳過最前面4條語句,然後取8條記錄
insert
into t_student (name, age) values (『mj』, 10) ;
update t_student set age = 5
where age > 10
and name != 『jack』 ;
delete
from t_student whereage <=10 orage >30;
// 刪表 : drop
table
ifexists 表名 ;
// 刪除表資料 :delete
from t_student;
5.core data
參考:
//例子
- (uiview *)hittest:(cgpoint)point withevent:(uievent *)event
//預設實現
- (bool)pointinside:(cgpoint)point withevent:(nullable uievent *)event
參考:
//方法一:kvc(鍵值編碼)
//定義person類
//.h檔案
@inte***ce
person : nsobject
@private
//name為私有屬性
@property (nonatomic, copy) nsstring *name;
@end
//.m檔案
@implementation
person
@end
//在某控制器中訪問或修改person類的私有屬性name
//首先記得引入標頭檔案,然後看下面具體實現
@implementation
viewcontroller
- (void)viewdidload
//方法二:通過runtime獲取或修改乙個類私有屬性的值
//同上定義person類
//.h檔案
@inte***ce
person : nsobject
@private
//name為私有屬性
@property (nonatomic, copy) nsstring *name;
@end
//.m檔案
@implementation
person
@end
//在某控制器中訪問或修改person類的私有屬性name
//首先記得引入標頭檔案,然後看下面具體實現
@implementation
viewcontroller
- (void)viewdidload
#import
// load方法會在類第一次載入到記憶體的時候被呼叫
- (void)load else
});} - (id)zwb_safeobjectatindex:(nsuinteger)index else
}
//.h
#import
@inte***ce
nsobject (indiebandname)
@property (nonatomic, strong) nsstring *indiebandname;
@end
//.m
#import "nsobject+indiebandname.h"
#import
static
const
void *indiebannamekey = &indiebannamekey;
@implementation
nsobject (indiebandname)
@dynamic indiebandname;
- (nsstring *)indiebandname
- (void)setindiebandname:(nsstring *)indiebandname
@end
alter
table table_name
add column_name datatype
alter
table table_name
drop
column column_name
alter
table table_name
alter
column column_name datatype
參考:
參考:參考:
我遇到過的面試題
1.c 類中,成員函式和成員變數加上static分別有什麼作用?2.在16位機器中,定義乙個陣列short a 100 則sizeof a 的值是。3.c 中的過載 覆蓋 隱藏的區別。4.在16位cpu的系統中,有如下c語言源 short a,b a b 1000 123 a long b 1000...
公司筆試曾經遇到過的面試題
將2和8 化成二進位制數,進行乘法運算,得出數字的二進位制化成十進位制為16,也可以用唯一進行表示,2乘以8 可以理解為2 2 3,就是而要向左移動3位這樣的話,就得出如上圖的移位的二進位制數字,組後將其化成十進位制為16 傳遞變數 尋找中間變數 通過第三方變數 類似int n 3,m 8 int ...
面試中遇到過的問題
二分類問題,使用sigmoid函式,為什麼使用sigmoid函式 因為二分類問題標記為 0,1 lr產生的 值是連續的實數,因此要把它轉換為0 1。如果直接使用單位階躍函式,值是不連續的。而sigmoid是最理想的,在 值 0附近曲線很陡,而且能將 值轉化為乙個接近0 1的y值 怎麼得出loss f...