美團面試
一面算法
一、簡歷上寫的項目問了一遍,而後開始問知識點。數據庫
二、volley的源代碼,在圖片緩存部分討論了挺長時間,http中緩存機制,json
三、視覺控制器的生命週期設計模式
四、數據庫數組
五、多線程(NSTread、NSOPeration、GCDA+block)緩存
六、http協議get post的區別安全
七、手機適配一些方案性能優化
八、真機調試、項目上線注意事項服務器
九、靜態方法是否能被重寫
這些大概聊了1個半小時,開始的時候還有些緊張,慢慢聊開了,就好多了,面試官的語速有點快,總是須要面試官重複一遍,我也不經意間語速也變快了,不過能看出來面試官仍是很厲害的。
二面
一、id和nill表明什麼(nill和NULL的區別)
二、向一個nill對象發送消息會發生什麼?
三、http中的同步和異步
四、MVC 和 MVVM 的區別。
用 MVVM 實現一個業務。VC 是入口,VC1 顯示 「省」 的列表,VC2 顯示省關聯的 「市」 的列表,VC3 顯示市關聯的 「縣」 的列表。VC 到 VC1,VC1到 VC2,VC2 到 VC3,VC3 再跳轉到 VC。相關點在於如何設計 ViewModel 和 Model ,以及 VC3 到 VC。
如何編寫單元測試,好比寫了一個網絡庫,如何測試該網絡庫,用例怎麼寫的更全面一些。
代碼從 Git 上拉下來到生成 .ipa 都有哪些過程,期間都生成了什麼文件。
最近讀過哪些書,看過哪些框架,有什麼收穫。
談到 JSPatch,問 JSPatch 是如何處理 Block 的。
本身擅長的地方。
遇到過什麼樣的挫折。
新增二面被問到的問題:若是沒有instruments,該如何檢測memory leak, zombie object 之類的問題。
三面
一、iOS是如何進行資源管理的。
二、Python比較重要的幾個特性
三、網絡五層結構,每一層協議,因爲我網絡不是很好,還問了一些其餘的問題(例如MAC地址和ip地址的區別等)。
先談了下前兩面的感覺和問題,又和麪試官聊到了單例和全局變量的區別。
Block和Protocol的區別,Block是爲了解決什麼問題而使用的。
iOS 的設計模式。iOS 爲何沒有相似於 Java 和 C 之類的 「Builder」 的構造模式。
冒泡、插入、快速排序的平均時間複雜度和最壞時間複雜度。
堆排序。
有時間複雜度爲 O(n) 的排序嗎?
最近從 stackOverFlow 上解決過的問題,讀過的開源框架,讀過的書,業餘興趣,最有成就感的事情。
阿里
一面
一、介紹項目
二、在KVO中,他是怎麼知道監聽的對象發生了變化?
三、字典的工做原理 ?怎100w箇中是怎麼快速去取value?
四、一個上線的項目,知道這個方法可能會出問題,在不破壞改方法前提下,怎麼搞?
五、Block和函數指針的區別?
六、性能優化
七、YYModel和AF源碼
八、如何本身設計json轉model
九、架構
他們的面試官好像都愛問一下底層的東西,好比此次面試上來機會問我KVO的問題。
問題【1】,看着好像很吊的樣子,仔細同樣不去思考,可能還真不是太瞭解,
問題【2】,這個就是純純的數據結構的問題了。
問題【3】,這個就是iOS的runTime的問題了,要只要isa,和一些swizzling技術
問題【4】,就是看你瞭解有多普遍了。
二面
一、淺拷貝和深拷貝的區別
二、Block的循環引用、如何解決、原理
三、Block和delegate的比較
四、kvo的實現原理
五、Autorelease pool的實現原理
六、消息轉發機制
七、線程死鎖的四個條件
八、進程和線程的區別
九、持久化
十、事務的特徵
中途還討論了Masonry的約束應該寫在哪裏,我說應該寫在layoutSubViews,他說會調用屢次,而後爭論了一下子
三面
主要問了項目的一些東西 和給一些場景問我如何實現
自我介紹 介紹一些項目難點
主線程是相對於什麼而言的
一張圖片的內存佔用大小是由什麼決定的
索引的做用
索引的優缺點
在數組中找最小的k個數
淘寶下拉加載更多如何優化
淘寶頁面發送HTTP請求的過程
介紹一下MVVM
知道哪些設計模式
三面面試官主要就聊了一些具體場景問題和一些基礎,基礎應該是沒太大問題。
頭條
一面
自我介紹
項目相關
怎麼自定義導航跳轉
談談runtime的理解
KVC的用途
使用method swizzling要注意什麼?(進行版本迭代的時候須要進行一些檢驗,防止系統庫的函數發生了變化)
談對引用計數的理解
談談runloop的理解
runloop有哪些狀態
autoreleasepool的使用場景
TableView優化,怎麼減小卡頓
copy assign retain weak關鍵詞
JSON轉Model
代碼佈局
多屏幕適配
HTTP2
HTTP請求頭和響應頭
Cookie
NSCache
本身設計一個緩存器
怎麼實現LRU
SDWebImage
二叉樹先序遍歷(遞歸和非遞歸)
二面
MVC的一些缺點
講一講其它架構
你知道哪些編碼方式
算法字符串翻轉
多線程的方式和它們的區別
隊列和線程的關係
一道線程安全的題
有哪些鎖
屬性的關鍵字
assign能夠用於OC對象嗎
copy和strong的區別
weak如何實現自動賦nil
爲何不可變對象要用copy
assing可使用在對象中嗎
Pod update和pod install的區別
layoutIfNeeded和setNeedsLayout的區別
抓包工具抓取HTTPS的原理
isEquel和hash的關係
bitmap的結構
可變數組的實現原理
如何hook一個對象的方法,而不影響其它對象
如何避免if else
自旋鎖和互斥鎖的區別
三面
介紹項目,主要介紹本身強項一點的地方
數組cop后里面的元素會複製一份新的嗎
數組的淺拷貝與深拷貝
TCP爲何是三次握手和四次揮手
頭條一直都是視頻面,並且是一條龍服務。整體來講感受不錯,反正主要就是須要基礎足夠紮實,
百度
一面
一、iOS基礎知識
二、Python基礎知識,大概是多線程,線程安全,集合類,JVM,類相關知識等。
三、iOS一些源碼的閱讀
四、優秀的第三方框架源碼閱讀
五、GLSurfaceView的相關知識,OpenGL,Shader,繪製流程。
六、詢問當前作的項目,以及到具體的實現和優化。
七、多進程間的通信,Binder機制。
八、詢問看過哪些框架源碼,EventBus,Volley講了一下。
二面
一、Delegate 、Notification和KVO比較各自的優缺點
二、在一個UI的正中間實現一個正方形的紅色視圖有幾種方式?
三、手觸碰到屏幕的時候,響應機制是怎樣的?第一響應者是誰?追問 UIView和UIResponse的關係是什麼?
四、UIViewController的生命週期是什麼?追問 UIViewController 只alloc而沒用到的時候,
五、UIViewController 的view是否加載了?若是沒有加載那何時加載?
直接用UILabel和本身用DrawRect畫UILabel,哪一個性能好?爲何?哪一個佔用的內存少?爲何?
六、AFNetworking是否支持ipv6?
七、項目採用64位,爲何要用64位?怎麼修改爲64位?i386是什麼?他們有什麼關係?
八、iOS的應用程序有幾種狀態?追問,退到後臺代碼是否能夠執行?雙擊home鍵,代碼是否能夠執行?
九、通常使用的圖標內存爲多大?好比200×300的圖片,內存應該佔用多少比較合理?
十、說說你對內存泄漏的見解,追問,block爲何容易引發內存泄漏?
十一、[object copy]是淺拷貝仍是深拷貝?爲何是淺拷貝?copy是實現了哪一個協議?
十二、Images.xcassets和直接用圖片有什麼不同?
三面
全是問得iOS方面的問題,問得真的很細,須要基礎很紮實,對各個機制真的足夠理解,否則確實有點難回答。
一、內存管理方面的
二、多線程
三、各類隊列
四、線程鎖
五、MVVM
就是考察一下我iOS方面的能力究竟是否有水分吧。問得很細,確實須要基礎足夠紮實才行。
騰訊
一面
一、介紹一下實習的項目,任務分工,作了哪些工做?介紹實習內容
二、網絡相關的:項目裏面使用到什麼網絡庫,用過ASIHTTP庫嗎
三、斷點續傳怎麼實現?須要設置什麼?
四、在杭州HTTP請求服務器響應快,可能離服務器距離近,而在深圳訪問就很慢很慢,會是什麼緣由?若是用戶投訴,怎麼分析這個問題?
五、HTTP請求的哪些方法用過?何時選擇get、post、put?
六、TCP創建鏈接的過程,斷開鏈接的過程,爲何是四次握手?
七、項目裏面的數據存儲都用了哪些?知道iOS裏面有哪些數據存儲方法?何時該用哪些方法存儲?
八、MVVM如何實現綁定
九、block和通知的區別,分別適用什麼場景
十、算法。連續問了好幾個,都是數組,層層遞進的,可是我忘了,只記得最後是找出數組
十一、中重複的數字
十二、進程和線程的區別
1三、程序在運行時操做系統除了分配內存空間還有什麼
1四、進程間通訊的方式
1五、如何檢測應用是否卡頓
1六、發佈出去的版本,怎麼收集crash日誌?不使用bugly等第三方平臺或者這些第三方平臺是怎麼收集crash日誌的?
1七、在block裏面使用_property會形成循環引用嗎?怎麼解決?除了使用self->_property,可使用valueforkey來訪問嗎 在block裏面能夠修改它的值嗎setvalueforkey?能夠修改它的值,能夠用valueforkey來解決,顯式的的使用self,block外先持有self的弱引用。
二面
一、OC中對象的結構
二、多態
三、Ping是什麼協議
四、知道MTU嗎
五、ARC和MRC的本質區別是什麼?
六、NSThread,GCD,NSOperation相關的。開啓一條線程的方法?線程能夠取消嗎?
七、子線程中調用connection方法,爲何不回調?由於沒有加入runloop,執行完任務就銷燬了,因此沒有回調。
八、MVC和MVVM的區別
九、瞭解哪些設計模式
十、存一個通信錄,包括增刪改查,用什麼數據結構
十一、autorelease變量何時釋放?手動添加的是大括號結束的時候釋放,系統自動釋放是在十二、當前runloop循環結束的時候
1三、那子線程中的autorelease變量何時釋放?
1四、子線程裏面,須要加autoreleasepool嗎
1五、GCD和NSOperation的區別?
1六、項目裏面遇到過死鎖嗎?怎麼解決?數據庫訪問原本就是線程安全的,不會形成死鎖啊。什麼是死鎖?
1七、Viewcontroller的生命週期?
1八、在init方法裏面,設置背景顏色,會生效嗎 會生效。爲何會?
1九、WWDC2016公佈了哪些新特性?對蘋果系列的最新特性有關注嗎
20、看過哪些源碼,講講思路
2一、兩個鏈表找第一個相同結點
2二、字符串旋轉
2三、找鏈表的倒數第k個結點
2四、把一個鏈表比某個值大的放在左邊,比它小的放在右邊
2五、二叉樹的中序遍歷,非遞歸
此文章源自第三方轉載