国产激情久久久久久有声小说_变态拳头交视频一区二区_国产超91_国产AV巨作情欲放纵无码_日韩中文字幕一区二区在线视频_深夜视频在线

好獵頭網-中高級人才獵頭網站!服務熱線:400-1801-668 好獵頭   |   登錄 注冊

iOS工程師面試筆試題

添加時間:2018-04-12 10:49:28
瀏覽次數: 0
前言:以下iOS工程師面試筆試題,部分來源于網絡,筆者在此處收集起來,既是要鞏固自我,也希望能夠幫助到同樣需要的人!參考答案均為筆者所寫,其有疑問或者出錯之處,請在評論中提出,謝謝!不喜勿噴!

1. #import和#include的區別?

參考答案:

#import是Objective-C導入頭文件的語法,可保證不會重復導入。
#include是C/C++導入頭文件的語法,如果是Objective-C與C/C++混編碼,對于C/C++類型的文件,還是使用#include來引入,這種寫法需要添加防重復導入的語法。

2. @class的作用

參考答案:

@class一般用于頭文件中通過前向聲明,就可以聲明了,但是在.m文件中還是需要使用#import進來的。它的作用只是前向聲明。

3. 用NSLog函數輸出一個浮點類型,結果四舍五入,并保留一位小數

參考答案:

float money = 1.011;
NSLog(@"%.1f", money);

使用%f來格式化,其中要保留一位小數,因此再用%.1f就是保留一位。

4.property屬性的修飾符有什么樣的作用

參考答案:

property是屬性訪問聲明,擴號內支持以下幾個屬性:
getter=getName、setter=setName:設置setter與getter的方法名
readwrite、readonly:設置可供訪問級別
assign:方法直接賦值,不進行任何retain操作,為了解決原類型與環循引用問題
retain:其setter方法對參數進行release舊值再retain新值,所有實現都是這個順序
copy:其setter方法進行copy操作,與retain處理流程一樣,先對舊值release,再copy出新的對象,retainCount為1。這是為了減少對上下文的依賴而引入的機制。
nonatomic:非原子性訪問,不加同步, 多線程并發訪問會提高性能。注意,如果不加此屬性,則默認是兩個訪問方法都為原子型事務訪問。

5. self.name=@object和name=@object有什么不同?

參考答案:

self.name =”object”:會調用對象的setName()方法;name = “object”:會直接把"object"字符串賦值給當前對象的name屬性。

6. viewDidLoad、loadView和viewDidUnload何時調用

參考答案:

viewDidLoad在view加載完成時調用,loadView在controller的view為nil時調用。對于viewDidUnload現在已經不能直接調用了。

7. objective-c中的可變與不可變詞典

參考答案:

可變字典就是可以增、刪、改操作的字典,對應于NSMutableDictionary類型。
不可變字典就是不能執行增、刪、改操作的字典,對應于NSDictionary類型。

8.Objective-C的內存管理

參考答案:?

現在內存管理幾乎都采用ARC,也就是Automatic Reference Counting,意思是自動引用計數。由編譯器在編譯時自動為添加retain、release等代碼。

如果問的MRC,也就是Manual Reference Counting,意思是手動內存管理。

黃金法則:誰使對象的引用計數+1,不再使用該對象時,誰就應該使該對象的引用計數-1。

9. 自動生成getter/setter方法

參考答案:

對于以前的代碼,那時還沒有property,使用這樣的方法來創建:

- (void)setName:(NSString *)aName;
- (NSString *)name;

在后面有了property,直接使用@property (nonatomic, copy) NSString *name這樣的方法來聲明,編譯器會自動生成getter/setter方法并生成一個_name成員變量。

10. 什么是MVC

參考答案:

我相信大部分人在被問到這個問題時,都會回答M就是Model,V就是View,C就是Controller。這都是停留在概念上的回答,明顯沒有什么工作經驗。對于一個對框架和架構有一定的思想的人,回答時會從項目的耦合度、團隊開發如何減少沖突、如何降低團隊與團隊之間的溝通成本、如何將M、V、C之間按照既定的標準建立溝通的橋梁。

Model用于處理數據,通常來說,Model中會包含多個字段,用于存儲數據。但是,Model還會有一部分邏輯,比如說:

@interface TestModel: HYBBaseModel?
?// 這個是接口返回的字段,1表示XXX,2表示YYY,3表示ZZZ
@property (nonatomic, assign) NSUInteger type;?
// 這個不是接口返回的字段,但是由于`type`字段是一個數值,不是`view`需要顯示的數據
// 所以我們最好將邏輯統一放到這里來,外部只管獲取最終顯示需要的值即可。即使哪天接口
// 返回的字段變化或者增加什么新的值,只需要處理這個模型內部就好了。?
@property (nonatomic, copy, readonly) NSString relationship;
@end

對于View,不應該包含邏輯,應該根據模型直接獲取數據。

對于Controller,大部分交互邏輯都集中到了這里,所有View需要的數據,都是通過Controller提取Model然后交給view去顯示數據。

11. 重寫getter/setter方法

假設聲明屬性:

@property (nonatomic, copy) NSString *blogName;
重寫這個屬性的getter/setter方法:

參考答案:

這里一旦連getter方法也重寫,編譯器不會給我們自動生成成員變量_blogName,因此我們需要在類的聲明中添加一個成員變量_blogName:

@interface Demo () {
? ?NSString *_blogName;
}
?@end

在自動內存管理下(ARC):

- (void)setBlogName:(NSString *)aName {
? ?if (_blogName != aName) {
? ? ? _blogName = nil;
? ? ? _blogName = [aName copy];
? ?}
}
- (NSString *)blogName {
? return _blogName;
}
對于手動內存管理(MRC):
- (void)setBlogName:(NSString *)aName {
? ?if (_blogName != aName) {
? ? ? [_blogName release];
? ? ? _blogName = nil;
? ? ? _blogName = [aName copy];
? ?}
}
- (NSString *)blogName {
? return _blogName;
}


12. obj在編譯時和運行時分別時什么類型的對象

如下面的代碼,obj在編譯時和運行時分別時什么類型的對象:
NSString *obj = [[NSData alloc] init];

參考答案:

在編譯時,我們所聲明的obj是NSString *類型,因此是NSString類型對象。在運行時,由于指針obj所指向的是NSData類型對象的內存,因此實際上是NSData類型的對象。在編譯時,這一行代碼會轉換成類似這樣:

NSString *obj = ((id (*)(id, SEL))objc_msgSend)([NSData class], @selector(alloc));
obj = ((id (*)(id, SEL))objc_msgSend)((id)obj, @selector(init));

由于在編譯時,轉換成id,因此可以用NSString *指向NSData對象,而id是具備運行時特性的,因此在鏈接時,通過id的isa指針可以找到其所屬的類,因此最終類型還是通過isa確定其所屬類型。

13. id聲明的對象有什么特性?

id類型可以指向任何類型的對象。

參考答案:
我們先看看其定義:

/// Represents an instance of a class.
struct objc_object {
? ? Class isa ?OBJC_ISA_AVAILABILITY;
};
/// A pointer to an instance of a class.
typedef struct objc_object *id;

可其定義可知id類型是一個指向objc_object結構體類型的指針,這個結構體只有一個指向對象無類的指針isa,因此id可以指向任何類型的對象,故其具備運行時特性。

14. iOS設備性能測試

在實際開發中,我們經常需要對應用瘦身,因此對性能的檢測是很重要的。

參考答案:
使用Profile-> Instruments ->Time Profiler可以檢測性能。

15. Objective-C中有私有方法、私有變量么?

我記得曾經我就被這么問過,不知道大家有沒有遇到過。

參考答案:

在類的.m實現文件內聲明,就可以作為私有方法、私有變量。但是,并不是絕對的私有,如果外部知道有這么個方法,一樣可以調用,而且不會報錯。就像蘋果公司沒有公開出來的API,只要我們通過其它方式了解到api就可以調用。于是蘋果審核時經常由于使用了私有api而打回來了。

16. 簡述tableview的重用機制

曾經筆者面試時,也被問到這個問題。

參考答案:?
[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]

?這個方法就是重用機制的核心了。比如,有一個界面可顯示10個cell,那么創建10次cell,并給cell指定同樣的重用標識(當然,可以為不同顯示類型的cell指定不同的標識)并且10個cell將全部都加入到visiableCells數組,reusableTableCells為空.

滾動tableView,當有一個cell完全移出屏幕時,這個cell就會被加入到reusableTableCells。而新出現的那個cell將加入到visiableCells,而這個cell就是被重用的。
如果要讓tableview不重用,不設置reuseIdentifier就可以了。

17. nil與NULL的區別

參考答案:

nil和C語言的NULL相同,在objc/objc.h中定義。nil表示Objective-C對象的值為空。在C語言中,指針的空值用NULL表示。在Objective-C中,nil對象調用任何方法表示什么也不執行,也不會崩潰。

18. Category是什么,何時使用?

參考答案:

Category就是所謂的擴展。

有時我們需要在一個已經定義好的類中增加一些方法,而不想去重寫該類,這時候使用擴展就很好。比如,當工程已經很大,代碼量比較多,或者類中已經有很多方法,已經有其他代碼調用了該類創建對象并使用該類的方法時,可以使用類別對該類擴充新的方法。

筆者所到公司之處,都會根據公司的UI風格定制一套UI組件,統一全局的風格。本人向來不喜歡用xib/storyboard開發,因為維護成本太高了。我們不能通過繼承的方式定制各種組件吧?所以這個時候使用擴展是最佳時期.

19. 什么是Delegate?常用場景?

參考答案:

Delegate就是所謂的代理,代理是一種設計模式。在iOS開發中,會使用到大量的代理,而代理設計模式是蘋果中的標準設置模式。

常用場景有反向傳值。比如:蘋果的藍牙,我們進入到下一個界面去打開或者關閉藍牙,當操作之后需要將狀態反饋到前一個界面,并更新顯示。對于這種狀態,使用代理設計模式是很標準的模式。

20. 什么是單例,如何設計單例?

參考答案:

單例就是全局都只有一個對象存在,而且是在整個App運行過程中都存在。每個App都會有單例,比如UIApplication。而我們在做用戶數據存儲時,通常都會用單例存儲,因為應用在所有操作中,經常要求先登錄。

下面這種寫法是最常用的寫法,這個是線程安全的。

+ (instancetype)shared {
? static HYBUserManager *sg_userManager = nil;
? static dispatch_once_t onceToken;
? dispatch_once(&onceToken, ^{
? ? if (sg_userManager == nil) {
? ? ? sg_userManager = [[HYBUserManager alloc] init];
? ? }
? });
? return sg_userManager;
}

21. 什么是通知?

參考答案:

在iOS中,通知是非常常用的設計模式。它是多對多的關系。關于通知,由于這一節比較重要,單獨寫成一篇文章,后續發出!
主站蜘蛛池模板: 青青草99啪国产免费_欧美与欧洲交xxxx免费观看_亚洲欧美日韩v在线观看不卡_成人91污污污在线观看_亚洲永久免费网站_亚洲视频一区二区三区_日韩在线视频在线观看_亚洲国产精品精华液网站 | 特级黄视频_中文字幕av免费_日本夜夜精_国产一二区_亚洲天堂网站_五月婷婷俺也去开心_日本熟妇XXXXX乱_最新国产小视频 | 伊人亚洲视频_完美世界在线观看免费完整_黑人黄色一级片_久久天天躁夜夜躁狠狠ds005_操女人视频网站_51嘿嘿嘿国产精品伦理_高清av免费_多人乱p欧美在线观看 | 久久伦理片_成人网视频在线观看_免费特级黄毛片_亚洲综合中文字幕一区二区_精品综合无码视频久久久_欧美日韩网站在线观看_小辣椒福利视频精品导航_成人黄色一级 | 色播基地_久久精品女人天堂av_日韩精品卡1卡2三卡四卡乱码_亚洲国产精品无码AAA片_国产精品久久久久毛片软件_欧美男男大粗吊1069_免费看av大片_一个人看的www免费高清在线视频 | 一级大片免费观看_中出在线观看_中文亚洲AV片在线观看不卡_国产一区在线观看免费_不卡日本视频_国产69精品久久久久999天美_99夜色_蜜桃视频在线观看免费视频网站WWW | 天天操导航_久久国内精品自在自线图片_av夜色_啪啪自拍视频_日韩在线精品中文字幕一区二区_亚洲精品久久一区二区三区_CHINASEX喷水VIDEOS中国少妇_久草视频网址 | 五十路亲子中出在线观看_极品少妇高潮到爽_狠狠干夜夜操天天爽_日韩网站免费观看_天天躁日日躁狠狠久久_免费播放一区_刺激cijilu福利区在线观看_国产区更新 | 综合网日日天干夜夜久久_成人激情开心_色婷婷六月亚洲综合香蕉_爆乳邻居肉欲中文字幕_ye321夜色资源网_你懂得视频在线_真实单亲乱L仑对白视频_亚洲国产精品人人做人人爱 | 四色永久网址在线观看_首页国产欧美日韩丝袜_国产丝袜视频一区二区三区_青青国产在线_欧美一a一片一级一片_国产午夜精品视频免费不卡69堂_亚洲伊人一本大道中文字幕_中字一区 | 中国浓毛少妇毛茸茸_中文乱幕日产无线码_日本免费高清线视频免费_欧美在线小视频_久久久久久久久精_精品国产AV一区二区三区_亚洲欧美色αv在线影视_黄色精品免费 | 国产日产欧美a一级在线_久久成人视屏_强行挺进朋友漂亮人妻身体_午夜影音_91精品国产高清久久久久久久久_国产高清久久_亚洲精品无码久久久_国产成人免费看片 | 久久久久久久久久网_精品视频在线免费观看_亚洲av午夜精品无码专区_美女牲交视频一级毛片动态图_亚洲国产成人综合精品_浴室人妻的情欲hd三级国产_涩涩的视频_bbwcuckold精品熟妇 | 成人欧美一区二区三区在线_97精品伊人久久大香线蕉_亚洲最大看欧美片网站_不卡的一区二区_极品美女一级片_伊人11_东京热T0KY0综合久久_国产vr在线视频一区二区不卡 | 亚洲中文字幕无码永久免弗_亚洲熟妇丰满XXXXX_日韩视频专区_免费观看黄色大片_男女无套免费视频网站_欧洲精品一区二区三区在线观看_www.91视频69xx.com_色七七桃花影院 | 365看片在线成人_国产成人综合亚洲精品_一区视频在线播放_男女又爽又黄激情免费视频大_超级碰人人超碰超国产_后入到高潮免费观看_亚洲啪AV永久无码精品放毛片_操久久久 | 色吊丝永久性观看网站_JULIAANN熟女俱乐部_国产精品无码专区在线播放_午夜精品久久久_宅男视频免费在线观看视频_欧美成人a视频_91成人免费视频_青草久久网 | 一级黄色绿像片_曰韩精品无码_日本真人啪啪免费无遮挡_欧美一区二区久久久_亚洲精品92内射_乱子伦av无码中文字幕_视频,国产成人精品日本亚洲18_水莓100完全国产免费 | 视频免费一区二区_久久国产极品_米奇影院7777_成人黄视频在线观看_日本熟妇五十路重生七零甜婚似火_交换国产精品视频一区_亚洲污视频在线观看_久久国产系列 | 国产成人一区在线_91亚洲网站_亚洲精品欧美综合一区二区_精品免费在线视频_无限看片在线版免费视频大全_视频91_久久久国产99久久国产一_亚洲免费不卡 | 国产一级性片_性欧美另类_精品视频一区二区在线_国产成人无码AⅤ片在线观看_国产一级一级一级_一级黄色大片在线_国产a爱_在线看片日韩 | 亚洲AV无码成人网站手机观看_中文字幕不卡乱偷在线观看_综合色站导航_亚洲一级图片_青天衙门第一部免费观看_天天搞夜夜骑_在线视频夫妻内射_国产黄色av免费看 | 草草爱视频_大片网站久久_99精品久久久久久久免费看蜜臀_男女av在线_亚洲一区欧美二区_欧美丰满熟妇bbbbbb百度_夜夜澡天天碰人人爱AV_国产盗摄偷拍视频 | 99九九热_公息肉吊粗大爽在线观看_三上悠亚日韩精品二区_久久久日本_色妹子久久_麻豆动漫_好逼天天操_久久精品桃花av综合天堂 | 一级国产黄色毛片_蜜桃一区二区三区在线_黄瓜视频成人在线观看_91精产国品一二三区_日韩欧美国产专区_久久久久久午夜噜噜噜噜蜜臀av_亚洲高清无码加勒比_伸进她的小内裤里疯狂揉摸小说 | 国产真实乱全部视频_在线男人天堂网_超级av在线天堂东京热_ww久久综合久中文字幕_成人黄色一区二区_国产av午夜精品一区二区三_sdde在线播放一区二区_成全免费在线看片 中文人字幕第三页_无码纯肉视频在线观看_99re国产在线播放_日本欧美高清全视频_日韩七区_亚洲第一最快AV网站_中日韩欧美风情视频_欧美成人一区二 | 日本免费黄色一级片_免费黄色毛片视频_久草色视频_欧美色综合天天久久综合精品_四虎在线免费播放_日韩毛片免费看_人人人射_免费人妻无码不卡中文字幕18禁 | 美女mm131爽爽爽作爱视频_快色在线观看视频_天天躁夜夜躁狠狠躁2021西西_久久精品国产网址_欧洲一级片_精品美女_欧美性生交XXXXX无码_熟妇人妻久久中文字幕 | xxxx漂亮少妇hdxxxx_久久香蕉国产线看观看手机_青青草手机在线观看_人妻激情另类乱人伦人妻_狠狠色狠狠色88综合日日91_有码在线_日韩av综合_好爽好痛好湿好硬视频免费 | 人妻免费久久久久久久了_办公丝袜av一区二区三区_2019日韩中文字幕mv_国产黄频免费无数次看_国产精品国产成人国产三级_动漫久久_午夜男女XX00视频福利_日韩高清在线不卡一区二区 | 日夜操天天干_久久精品99国产精品_国产一性一爱一乱一交_亚洲永久视频_精品久久久久久久无码人妻热_亚洲一级免费视频_m豆传媒在线链接观看_人人天天夜夜 | 高潮喷水的毛片_日本在线高清视频_久久精品综合网_日本区一区二_欧美国产综合一区二区_午夜福利国产成人无码_欧美国产亚洲精品_天天操婷婷 | 国产A∨国片精品一区二区_精品人成视频免费国产_xxxxfree少妇过瘾_午夜亚洲av日韩av无码大全_色依依av在线_亚洲精品一区二区三区99_1717精品视频在线观看_国内一区二区三区在线视频 | 在线观看91精品国产麻豆_少妇p毛又多水又大又黑_超碰91人人_segui88久久综合_国产JIZZJIZZ麻豆全部免费_国产精品一区二区三区av麻_色多多污_四虎www4hv | 亚洲国产日韩制服在线观看_永久免费精品_国产传媒中文字幕_亚洲欧美日韩一区_亚洲伊人色综合网色欲WWW_婷婷久久综合九色综合绿巨人_毛片图片_琪琪女色窝窝777777 | 男女aa视频_97人人草人人_成人日韩在线_亚洲AV秘无码一区二区三区一_爱啪啪av网_亚洲一区美女_久久精品国产99国产毛片_久久久精品人妻无码专区不卡 | 国自产拍亚洲免费视频_夫妇激情在线观看视频_亚洲精品高潮呻吟久久av_妞干网在线观看_精品久久久网_精品国产91久久久久久久妲己_国产人妇三级视频在线观看_国产精品56页 | 久久精品国产99久久无毒不卡_欧美色欧美亚洲另类七区_国产精品无码天堂av_欧美性色欧美性a片_亚洲日色_日韩A人毛片精品无人区乱码_久久免费毛片大全_国产综合一区二区三区视频一区 国产免费黄色片_久久午夜免费视频_麻豆影视在线免费观看_成人三级做爰av_久久精品中文闷骚内射_美女视频黄的免费_人妻无码一区二区三区_亚洲特黄毛片 | 国产2区_中国少妇videos露脸hd_香港三日本8A三级少妇三级99_中文字幕一区久久_影音先锋ady69色资源网站_99在线观看视频免费_成人啪啪_最新超碰在线 | 俺也去俺来也www色官网_国产精品久久久久激情影院_小荡货好紧好爽奶头大视频_亚洲免费精品一区_欧美群妇大交乱视_国产一区视频播放_一区二区三区四区欧美日韩_亚洲欧美日韩系列中文字幕 | 91视频综合_亚洲自拍偷拍区_偷国产乱人伦偷精品视频_91九色视频网_黄色片在线观看免费_日韩精品一区二区在线观看_亚洲一级精品毛片_成年动漫av网免费 |