1. 程式人生 > >最新名企招聘現場,現場實拍筆試部分

最新名企招聘現場,現場實拍筆試部分

大企面試現場,最新筆試題分享,小編也不斷收到網友們投稿(現場筆試實拍)

 

圖片描述

 

持續關注: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 可根據之前的命令找到之前的崩潰所在的程式碼行

題四:針對常見的介面卡頓現象,闡述你覺得可能的各種原因,以及對應的優化方案。

答案:

常見的介面卡頓,一般是在主執行緒中做了一些耗時的操作。比如網路請求,大量的資料儲存,計算,還有就是過於複雜的介面繪製等等。

解決的辦法是:首先在可以考慮加上卡頓監控,監控每一個方法的執行時間。然後找到對應的卡頓的方法,每個方法的實際執行時間,如果時間過長就要去看看該方法是否可以在子執行緒執行,或者能不能在子執行緒執行完畢將結果回撥到主執行緒。

另外繪製介面的時候就需要儘量少使用圓角裁剪,透明色。介面佈局的時候儘量使用程式碼佈局。