關于iOS面試要注意的問題(自留)

本文是對觀看sunnyxx(孫源)大神直播寫的記錄,加強自己的記憶,也希望對同行們有所幫助

關于簡歷方面

1、項目描述過于簡單寬泛

項目規(guī)模?你在其中的職責?詳細介紹使用的技術棧?遇到的挑戰(zhàn)以及如和解決的?

2、專業(yè)技能千篇一律

在列舉技術名詞的時候最好寫出用這個技術干了什么。比如“熟練運用 objc runtime,曾使用它做了ViewController 進入和退出時的AOP埋點”

3、格式、拼寫、細節(jié)

Object-C//這個我相信沒人知道是啥寫全時最好的 Objective-C
Foudation//拼寫錯誤
ios/IOS/Ios//iOS這樣更好
AFNetWorking//networking是一個單詞不需要駝峰
xcode/Xcode//第二個肯定更正確

4、需要提供更多的信息來體現(xiàn)你的特別
Blog GitHup
技術探索
對技術的個人理解以及做過什么有意思的事

5、謙虛、真實

寫最真實的簡歷,這個還是很重要的吧

面試套路

這一塊也是根據(jù)面試官不同而又差異性。列舉幾個

1、最近的工作經(jīng)歷,做了什么App,拿出來玩一玩。詢問面試者負責的是哪一部分。
2、找面試者最熟悉的業(yè)務。描述大概的設計結構,UI層級,交互效果,布局等(考察基本業(yè)務能力,熟練程度,質量)
3、考察基礎問題。如內(nèi)存基礎,多線程等。答的可以會深挖。
4、很厲害了了就會問一些高級的問題,涉及到底層原理這些。

建議:

  • 不會的問題可以猜一下,不要陷入無限的思考和一本正經(jīng)的胡說八道。也可以當場請求面試官,學一下。
  • 保持溝通順暢
  • 保持謙虛,不要裝x

幾個iOS面試題

//@property能使用哪些關鍵字及作用是什么
//下面四種寫法有什么區(qū)別?
@property(nonatomic, strong)NSArray *array0;
@property(nonatomic, copy)  NSArray *array1;
@property(nonatomic, strong)NSMutableArray *array2;
@property(nonatomic, copy)  NSMutableArray *array3;
//可使用的關鍵字:
strong:強引用,增加對象的引用計數(shù)。會引起外界對象改變導致自己也會改變
copy:復制對象,防止外界對象改變對自己進行改變
weak:弱引用。對象消失后會將指針指向nil
assign:簡單賦值。一般用于基礎類型數(shù)據(jù)
//區(qū)別:
第一種跟第二種的寫法,一般采用第二種。因為如果外界的對象對屬性賦值后,如果使用strong修飾那么屬性值也會更該,相反copy修飾不會。
第三種跟第四種寫法也是采用第三種。因為可變對象用copy修飾后會變?yōu)椴豢勺儗ο螅@時再寫不可變方法就會crash。
基本內(nèi)存管理
//下面對象分別都在什么時候釋放
- (void)ARCProblem {
id obj0 = @"sunnuyxx";
__weak id obj1 = obj0;
id obj2 = [NSObject new];
__weak id obj3 = [NSObject new];
{
    id obj4 = [NSObject new];
}
__autoreleasing id obj5 = [NSObject new];
__unsafe_unretained id obj6 = self; 
}
//解答
obj0:一直在,常量區(qū)
obj1:不會釋放跟0有關
obj2:用完obj2就會釋放
obj3:本行結束之后就沒了
obj4:在區(qū)域結束時結束
obj5:自動釋放池
obj6:該修飾詞不會做任何操作,不知道什么時候釋放
 UIViewcontroller
//這樣寫會發(fā)生什么?
- (void)viewDidLoad{
      [super viewDidLoad];
      self.view = nil;
}
//很可能發(fā)生遞歸,不是很確定。大家可以自己測試一下
關于UITableViewDataSource 和UITableViewDelegate的主要方法還有調用順序。
這個我們自己測試一下就好了。
block內(nèi)存管理
//如何解決下面代碼問題
-(void)blockRetainCycleProblem{
self.block = ^{
      NSLog(@"%@",@[self]);
  };
}//循環(huán)引用。block跟self相互持有,如果這里不是self的block就不會出問題
//解決方法
-(void)blockRetainCycleProblem{
__ weak  typeof(self) weakSelf = self;
self.block = ^{
      NSLog(@"%@",@[weakSelf]);
  };
}//這是我經(jīng)常寫的方法
-(void)blockRetainCycleProblem{
__ weak  typeof(self) weakSelf = self;
self.block = ^{
     __ strong  typeof(weakSelf) strongSelf = weakSelf;
    NSLog(@"%@",@[strongSelf]);
  };
}//第二種
-(void)blockRetainCycleProblem
{
__ weak  typeof(self) weakSelf = self;
self.block = ^{
     __ strong  typeof(weakSelf) strongSelf = weakSelf;
     if(strongSelf)
    {
       NSLog(@"%@",@[weakSelf]);
    }
  };
}//第三種
第一種:是我經(jīng)常寫的方法,這里出問題了如果self釋放了,weakSelf指向nil,數(shù)組里面放nil也一樣會crash。
第二種:接一下的時候很可能weakSelf已經(jīng)置為nil,一樣會crash。
第三種:做一次判斷是否nil,完善了寫法。
block內(nèi)存管理擴展
- (void)blockRetainCycleProblemExt
{
//下面的self用不用weak?
  [UIView animateWithDuration:1 animations:^{
    self.view.frame = CGRectMake(1,2,3,4);
  }];
  //那這個呢?
  [UIView animateWithDuration:1 delay:100000 optios:0 animations:^{
    self.view.frame = CGRectMake(1,2,3,4);
  } completion:nil];
}
//解答 :
類方法。這里面的block是瞬間執(zhí)行的。
理解應用架構
//對 MVC 和 MVVM 的理解真的到位么
深入理解內(nèi)存管理
1、Stack 和 Heap 分別的使用,如何管理?
2、ARC 是如何實現(xiàn)的?
3、Autorelease 對象如何釋放?
4、AutoreleasePool 是如何實現(xiàn)的?
理解 Class 和對象模型
理解 RunLoop
深入理解消息機制
//從寫下 [ obj foo]這行代碼直到運行時 foo 被調用,
//盡量詳細的描述,中間都發(fā)生了什么?
掌握:objc_msgSend 的關鍵調用,后續(xù)如何通過 selector 從 isa 找到 IMP,若運行時沒找到 foo 會如何?
精通:編譯器如何編譯成 objc_msgSend、 消息 cache 機制、消息轉發(fā)機制、 objc_msgSend 的各個版本、objc_msgSend 的實現(xiàn)、跳板機制等等
魔法數(shù)字
//64位,下面魔法數(shù)字會輸出什么,為什么?
- (void)magicNumberProblem
{
    NSLog(@"%@",11529223390768879413UL);//Tagged Pointer
}
另辟蹊徑的 block 調用
//如果禁止直接調用:block();
//那能否找到2個以上另辟蹊徑的方式讓 block 被調用?
void (^block)(void) = ^{
    NSLog(@"block get called");
};
block();//禁止調用
//解決:
讓別人幫你調用 傳入block
[UIView animateWithDuration:0 animation:block];//這里的bolck立馬調用
dispatch_async(dispatch_get_main_queue(), block);
[[NSBlockOperation blockOperationWithBlock:block] start];

談談iOS進階

漫長的知識點積累

  • 看書
  • 看博客
  • 實戰(zhàn)總結
  • 刨根問底
    聯(lián)想、理解,有自己的思考、對技術的主見

總結

看完直播后感覺基礎好差。積累的還是不夠多,接下來就這針對這些問題好好的研究研究了。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,937評論 25 709
  • 請問求職面試要注意哪些問題? 求職者在學習面試禮儀時應該首先了解面試本身的作用、面試的過程,然后準備相應的面試禮儀...
    DragonersLi閱讀 27,300評論 8 393
  • 踏上這片土地的時候,我的感覺就像撿了一顆寶石,得到了人生意想不到的驚喜,炫彩奪目,對著陽光,折射出的光芒都讓人驚嘆...
    小叉子閱讀 799評論 3 7
  • 1.非常忙的一周,著急到失聲,忙真是跟亂捆綁在一起來的哈~來做反思的時候發(fā)現(xiàn)忙亂來自內(nèi)心,內(nèi)心沒有清晰的規(guī)劃,沒有...
    超級蒙蒙蒙閱讀 346評論 1 1
  • 1、去廣州參加易效能一階的復訓,對OmniFocus 和calendars 5以及一些概念有了更清晰的認識。 2、...
    龍女茗茶閱讀 159評論 0 0

友情鏈接更多精彩內(nèi)容