最新名企招聘現場,現場實拍筆試部分
阿新 • • 發佈:2018-11-02
大企面試現場,最新筆試題分享,小編也不斷收到網友們投稿(現場筆試實拍)
持續關注:logic_楚陽,持續輸出各大公司iOS面試系列文章,歡迎廣大程式猿找我投稿面試中碰到的面試題,我會給你一份我的見解和答案,前面已經分享100道我招聘的面試題,加入下方iOS技術交流群624212887直接獲取;
題一:針對以下二叉樹進行廣度遍歷(ABCDEFG)和深度遍歷(ACGFBED)。描述演算法思維或者虛擬碼實現即可
答案:
//廣度優先遍歷void breadthFirstSearch(Tree root){
queue nodeQueue;
//使用C++的STL標準模板庫 nodeQueue.push(root);
Node *node;
while(!nodeQueue.empty()){
node = nodeQueue.front();
nodeQueue.pop();
printf(format, node->data);
if(node->lchild){ nodeQueue.push(node->lchild); //先將左子樹入隊 } if(node->rchild){ nodeQueue.push(node->rchild); //再將右子樹入隊 } } } //深度優先遍歷void depthFirstSearch(Tree root){ stack nodeStack; //使用C++的STL標準模板庫 nodeStack.push(root); Node *node; while(!nodeStack.empty()){ node = nodeStack.top(); printf(format, node->data); //遍歷根結點 nodeStack.pop(); if(node->rchild){ nodeStack.push(node->rchild); //先將右子樹壓棧 } if(node->lchild){ nodeStack.push(node->lchild); //再將左子樹壓棧 } } }
題二:閱讀下面一段程式碼(model 類) 提出你所有的改進建議和程式碼風格。
答案:
NSString 請使用copynonatomic
int uid 還是需要關鍵詞assign
NSMutableArray請使用strong
題三:針對常見的崩潰錯誤,有什麼好的除錯方法?(例如:unrecognized selector和BAD_ACCES)針對線上版本的崩潰錯誤,如何進行跟蹤除錯?
答案:
當時打包的時候會有一個檔案dsym檔案,每次線上的版本可以根據當時的檔案,會有一個記憶體地址,根據當時的地址用xcode的命令就可以在大部分情況可以直接定位到問題所在
unrecognized
selector 根據崩潰的日誌,可以找到對應的類和響應的呼叫的方法,然後根據所呼叫的方法,在現有的程式碼體系中,根據現有程式碼的邏輯去檢查是否在某些情況下會出現崩潰的問題
BAD_ACCES 可根據之前的命令找到之前的崩潰所在的程式碼行
題四:針對常見的介面卡頓現象,闡述你覺得可能的各種原因,以及對應的優化方案。
答案:
常見的介面卡頓,一般是在主執行緒中做了一些耗時的操作。比如網路請求,大量的資料儲存,計算,還有就是過於複雜的介面繪製等等。
解決的辦法是:首先在可以考慮加上卡頓監控,監控每一個方法的執行時間。然後找到對應的卡頓的方法,每個方法的實際執行時間,如果時間過長就要去看看該方法是否可以在子執行緒執行,或者能不能在子執行緒執行完畢將結果回撥到主執行緒。
另外繪製介面的時候就需要儘量少使用圓角裁剪,透明色。介面佈局的時候儘量使用程式碼佈局。