李洪强经典面试题10
1.?????客戶端安全性處理方式?
1>???網絡數據傳輸(敏感數據[賬號\密碼\消費數據\銀行卡賬號],?不能明文發送)
2>???協議的問題(自定義協議,?游戲代練)
3>???本地文件存儲(游戲的存檔)
4>???源代碼
?
1>??SIP(Session Initiation Protocol),會話發起協議
2>??SIP是建立VOIP連接的?IETF?標準,IETF是全球互聯網最具權威的技術標準化組織
3>??所謂VOIP,就是網絡電話,直接用互聯網打電話,不用耗手機話費
?
1>???圖片下載放在異步線程
2>???圖片下載過程中使用占位圖片
3>???如果圖片較大,可以考慮多線程斷點下載
?
1>???提供給外界的接口功能是否實用、夠用
2>???別人使用我的框架時,能不能根據類名、方法名就猜出接口的具體作用
3>???別人調用接口時,提供的參數是否夠用、調用起來是否簡單
4>???別人使用我的框架時,要不要再導入依賴其他的框架
?
5.?????App需要加載超大量的數據,給服務器發送請求,但是服務器卡住了如何解決?
1>???設置請求超時
2>???給用戶提示請求超時
3>???根據用戶操作再次請求數據
?
6.?????利用NSNotificationCenter實現跨多控制器傳輸數據和消息中用同步還是異步?
?
7.?????如何編寫xml
?
8.?????地圖導航不能用了怎么辦
提示用戶打開導航定位功能
?
9.?????SDWebImage具體如何實現
1>???利用NSOperationQueue和NSOperation下載圖片,?還使用了GCD的一些函數(解碼GIF圖片)
2>???利用URL作為key,NSOperation作為value
3>???利用URL作為key,UIImage作為value
?
10. AFN?與?ASI?有什么區別
1>??AFN基于NSURL,ASI基于底層的CFNetwork框架,因此ASI的性能優于AFN
2>??AFN采取block的方式處理請求,ASI最初采取delegate的方式處理請求,后面也增加了block的方式
3>??AFN只封裝了一些常用功能,滿足基本需求,直接忽略了很多擴展功能,比如沒有封裝同步請求;ASI提供的功能較多,預留了各種接口和工具供開發者自行擴展
4>??AFN直接解析服務器返回的JSON、XML等數據,而ASI比較原始,返回的是NSData二進制數據
?
?
11.?你在實際開發中,有哪些手機架構與性能調試經驗
1>???剛接手公司的舊項目時,模塊特別多,而且幾乎所有的代碼都寫在控制器里面,比如UI控件代碼、網絡請求代碼、數據存儲代碼
2>???接下來采取MVC模式進行封裝、重構
l??自定義UI控件封裝內部的業務邏輯
l??封裝網絡請求工具類
l??封裝數據存儲工具類
?
12. runloop定時源和輸入源
1>???你創建的程序不需要顯示的創建run loop;每個線程,包括程序的主線程(main thread)都有與之相應的run loop對象,?主線程會自行創建并運行run loop
2>???Run loop處理的輸入事件有兩種不同的來源:輸入源(input source)和定時源(timer source)
3>???輸入源傳遞異步消息,通常來自于其他線程或者程序。定時源則傳遞同步消息,在特定時間或者一定的時間間隔發生
?
?
13.?你們項目中都用了哪些框架,?及何種開發工具,具體到是哪個版本,這個版本的特性有哪些???(比如xcode的版本)
1>??AFN、SDWebImage、MBProgressHUD等?(搜索:?網易新聞?第三方庫)
2>??Xcode 5.0
?
14.?自己怎么實現原子鎖
iOS中一般用nonaotomic
?
15.?運行時的內部實現
?
16.?即時通訊中的大數據處理
用put上傳到文件服務器,然后發帶url的自定義格式的給對方,對方接收到之后下載
?
17. json解析的具體實現
1>??SBJson
2>??JSONKit
3>??NSJSONSerialization
?
18.?如果在網絡數據處理過程中,發現一處比較卡,一般怎么解決
1>???檢查網絡請求操作是否被放在主線程了
2>???看看異步請求的數量是否太多了(子線程數量)
3>???數據量是否太大?如果太大,先清除一些不必要的對象(看不見的數據、圖片)
4>???手機CPU使用率和內存問題
?
19.?怎么介紹一個項目
1>???項目的價值(可以加些“老板”關鍵字)
2>???項目的模塊
3>???我做的是哪個模塊
?
20.?怎么解決sqlite鎖定的問題
1>??設置數據庫鎖定的處理函數
int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
2>??設定鎖定時的等待時間
int sqlite3_busy_timeout(sqlite3*, 60);?:
總結
以上是生活随笔為你收集整理的李洪强经典面试题10的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Google Guava] 使用和避免
- 下一篇: mysqlsla的使用