我遇到過的 iOS 面試題(Object C)

2021-07-26 18:46:39 字數 4314 閱讀 7921

題目都是我遇到過的 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...