大企面試現場,最新筆試題分享,小編也不斷收到網友們投稿(現場筆試實拍)php
持續關注:logic_楚陽,持續輸出各大公司iOS面試系列文章,歡迎廣大程序猿找我投稿面試中碰到的面試題,我會給你一份個人看法和答案,前面已經分享100道我招聘的面試題,加入下方iOS技術交流羣624212887直接獲取;node
答案:面試
//廣度優先遍歷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); //再將左子樹壓棧 } } }
答案:算法
NSString 請使用copynonatomicxcode
int uid 仍是須要關鍵詞assign網絡
NSMutableArray請使用strong佈局
答案:優化
當時打包的時候會有一個文件dsym文件,每次線上的版本能夠根據當時的文件,會有一個內存地址,根據當時的地址用xcode的命令就能夠在大部分狀況能夠直接定位到問題所在ui
unrecognizedatom
selector 根據崩潰的日誌,能夠找到對應的類和響應的調用的方法,而後根據所調用的方法,在現有的代碼體系中,根據現有代碼的邏輯去檢查是否在某些狀況下會出現崩潰的問題
BAD_ACCES 可根據以前的命令找到以前的崩潰所在的代碼行
答案:
常見的界面卡頓,通常是在主線程中作了一些耗時的操做。好比網絡請求,大量的數據存儲,計算,還有就是過於複雜的界面繪製等等。
解決的辦法是:首先在能夠考慮加上卡頓監控,監控每個方法的執行時間。而後找到對應的卡頓的方法,每一個方法的實際執行時間,若是時間過長就要去看看該方法是否能夠在子線程執行,或者能不能在子線程執行完畢將結果回調到主線程。
另外繪製界面的時候就須要儘可能少使用圓角裁剪,透明色。界面佈局的時候儘可能使用代碼佈局。