《 2018 iOS面試題系列 》
成都創(chuàng)新互聯公司主要從事成都網站設計、網站制作、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務安化,十余年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575
? ? 這里沒有圖啊,大家可以抽象一下。
? ? 數據結構的存儲一般常用的有兩種 順序存儲結構 和 鏈式存儲結構
? ? 發(fā)揮想象力啊。 舉個列子。數組。1-2-3-4-5-6-7-8-9-10。這個就是一個順序存儲結構 ,存儲是按順序的 舉例說明啊。 棧。做開發(fā)的都熟悉。棧是先進后出 ,后進先出的形式 對不對 ?!他的你可以這樣理解
? ? hello world 在棧里面從棧底到棧頂的邏輯依次為 h-e-l-l-o-w-o-r-l-d 這就是順序存儲 再比如 隊列 ,隊列是先進先出的對吧,從頭到尾 h-e-l-l-o-w-o-r-l-d 就是這樣排對的
? ? 再次發(fā)揮想象力 這個稍微復雜一點 這個圖片我一直弄好 ,回頭找美工問問,再貼上 例如 還是一個數組
? ? 1-2-3-4-5-6-7-8-9-10 鏈式存儲就不一樣了 1(地址)-2(地址)-7(地址)-4(地址)-5(地址)-9(地址)-8(地址)-3(地址)-6(地址)-10(地址)。每個數字后面跟著一個地址 而且存儲形式不再是順序 ,也就說順序亂了,1(地址) 1后面跟著的這個地址指向的是2,2后面的地址指向的是3,3后面的地址指向是誰你應該清楚了吧。他執(zhí)行的時候是 1(地址)-2(地址)-3(地址)-4(地址)-5(地址)-6(地址)-7(地址)-8(地址)-9(地址)-10(地址),但是存儲的時候就是完全隨機的。明白了?!
? ? 還是舉例子。理解最重要。不要去死記硬背 哪些什么。定義啊。邏輯啊。理解才是最重要滴
二叉樹有五種表現形式
? ?二叉樹可以轉換成森林 樹也可以轉換成二叉樹。這里就不介紹了 你做項目絕對用不到
? ?數據結構大致介紹這么多吧。理解為主, 別死記,死記沒什么用
從現在開始介紹算法啊
? ?二叉樹這個比較麻煩 還有平衡二叉樹 有點繞 如果不懂二叉樹這一塊 你是百分之二百看不懂的
原文鏈接
以下是我收集總結的 iOS技術點+面試題 分類;看看你都會了嗎?
重點總結-四大分類 :
iOS底層原理(必問) :iOS開發(fā)必備能力,也是大廠面試快速篩選人才方式之一。
常問例題 :
性能優(yōu)化以及架構能力 :目前大廠對于這一塊,非常重視;
常問例題:
多線程、網絡能力: iOS中高級開發(fā),都應該了解,并且熟悉的知識點;
常問例題 :
數據結構算法能力占比比較大: 通常一般大公司都會有一些筆試:雖然不在核心崗位對于數據結構算法要求不是非常嚴格,但是也會有一些常規(guī)的數據結構和算法的題
常問例題:
推薦閱讀:iOS熱門面試技術文集
Block 是將函數及其執(zhí)行上下文封裝起來的對象。 比如:
通過 clang -rewrite-objc WYTest.m 命令編譯該 .m 文件,發(fā)現該 block 被編譯成這個形式:
其中 WYTest 是文件名, blockTest 是方法名,這些可以忽略。其中 WYTest blockTest_block_impl_0 結構體為
--block_impl 結構體為
block 內部有 isa 指針,所以說其本質也是 OC 對象
block 內部則為:
所以說 Block 是將函數及其執(zhí)行上下文封裝起來的對象
既然 block 內部封裝了函數,那么它同樣也有參數和返回值。
如果你正在跳槽或者正準備跳槽不妨動動小手,添加一下咱們的交流群1012951431來獲取一份詳細的大廠面試資料為你的跳槽多添一份保障。
這里的輸出是 6 而不是 2,原因就是對局部變量 num 的截獲是值截獲。同樣,在 block 里如果修改變量 num ,也是無效的,甚至編譯器會報錯。
打印為 1,2,3
局部對象變量也是一樣,截獲的是值,而不是指針,在外部將其置為 nil ,對 block 沒有影響,而該對象調用方法會影響
輸出為 2,意味著 num = 1 這里的修改 num 值是有效的,即是指針截獲。同樣,在 block 里去修改變量 m ,也是有效的。
編譯后
( impl.isa = _NSConcreteStackBlock ;這里注意到這一句,即說明該 block 是棧 block )
可以看到局部變量被編譯成值形式,而靜態(tài)變量被編成指針形式,全局變量并未截獲。而 --block 修飾的變量也是以指針形式截獲的,并且生成了一個新的結構體對象:
該對象有個屬性: num5 ,即我們用 --block 修飾的變量。這里 --forwarding 是指向自身的(棧 block )。
一般情況下,如果我們要對 block 截獲的局部變量進行賦值操作需添加 --block 修飾符,而對全局變量,靜態(tài)變量是不需要添加 --block 修飾符的。
另外, block 里訪問 self 或成員變量都會去截獲 self 。
分為全局 Block(_NSConcreteGlobalBlock) 、棧 Block(_NSConcreteStackBlock) 、堆
Block(_NSConcreteMallocBlock) 三種形式
其中棧 Block 存儲在棧 (stack) 區(qū),堆 Block 存儲在堆 (heap) 區(qū),全局 Block 存儲在已初始化數據 (.data) 區(qū)
輸出:
比如:
輸出:
日常開發(fā)常用于這種情況:
比如堆 1中的全局進行 copy 操作,即賦值:
輸出:
仍是全局 block
而對 2中的棧 block 進行賦值操作:
輸出:
對棧 blockcopy 之后,并不代表著棧 block 就消失了,左邊的 mallock 是堆 block ,右邊被 copy 的仍是棧 block 比如:
輸出:
即如果對棧 Block 進行 cop ,將會 copy 到堆區(qū),對堆 Block 進行 copy ,將會增加引用計數,對全局 Block 進行 copy ,因為是已經初始化的,所以什么也不做。
另外, --block 變量在 copy 時,由于 --forwarding 的存在,棧上的 --forwarding 指針會指向堆上的-- forwarding 變量,而堆上的 --forwarding 指針指向其自身,所以,如果對 --block 的修改,實際上是在修改堆上的 --block 變量。
即 --forwarding 指針存在的意義就是,無論在任何內存位置,都可以順利地訪問同一個 --block 變量 。
另外由于 block 捕獲的 --block 修飾的變量會去持有變量,那么如果用 --block 修飾 self ,且 self 持有
block ,并且 block 內部使用到 --block 修飾的 self 時,就會造成多循環(huán)引用,即 self 持有 block , block 持有 --block 變量,而 --block 變量持有 self ,造成內存泄漏。
比如:
如果要解決這種循環(huán)引用,可以主動斷開 --block 變量對 self 的持有,即在 block 內部使用完 weakself 后, 將其置為 nil ,但這種方式有個問題,如果 block 一直不被調用,那么循環(huán)引用將一直存在。
所以,我們最好還是用 --weak 來修飾 self
以上就是 block 篇的面試題合集了,感謝觀看~!
AFNetworking主要是對NSURLSession和NSURLConnection(iOS9.0廢棄)的封裝,其中主要有以下類:
1). AFHTTPRequestOperationManager:內部封裝的是 NSURLConnection, 負責發(fā)送網絡請求, 使用最多的一個類。(3.0廢棄)
2). AFHTTPSessionManager:內部封裝是 NSURLSession, 負責發(fā)送網絡請求,使用最多的一個類。
3). AFNetworkReachabilityManager:實時監(jiān)測網絡狀態(tài)的工具類。當前的網絡環(huán)境發(fā)生改變之后,這個工具類就可以檢測到。
4). AFSecurityPolicy:網絡安全的工具類, 主要是針對 HTTPS 服務。
5). AFURLRequestSerialization:序列化工具類,基類。上傳的數據轉換成JSON格式
(AFJSONRequestSerializer).使用不多。
6). AFURLResponseSerialization:反序列化工具類;基類.使用比較多:
7). AFJSONResponseSerializer; JSON解析器,默認的解析器.
8). AFHTTPResponseSerializer; 萬能解析器; JSON和XML之外的數據類型,直接返回二進制數據.對服務器返回的數據不做任何處理.
9). AFXMLParserResponseSerializer; XML解析器;
你百度一下iOS面試寶典,面試的時候筆試題基本上都是從那里面選的,口頭面試無非就是問一些 數據持久化存儲,代理,單例,多線程,地圖,支付寶,網絡協(xié)議tcp,udp,socket,即時聊天會問xmpp,第三方推送,第三方登陸,社會化分享,即時聊天的第三方有環(huán)信,融云這些比較火的。我說的這些多看看,面試寶典多看看基本上面試沒什么問題。即便有些東西確實不理解,也要背一點,面試問道隨便說點。望采納。
之前,我寫過一篇 2018,我要一個新的開始 ,這個新的開始馬上就要開始啦...
相比前一段時間找工作時的波濤洶涌,這會算得上是風平浪靜了。下面,我就談一下我的面試經歷及面試后的一些感悟。文章最后附上自己總結的面試題,供大家分享交流。由于本人文筆水平很臭,如有不通順的地方可以在評論區(qū)指出來,看到我會麻溜的改正!對待學問是馬虎不得的,你說是不?
首先,我想說目前iOS開發(fā)工作真的是不好找了(對于大牛,你就當我這話沒說)。這是通過前一段時間我的親身經歷感受到的(怪我水平很臭嘍)。為此,我總結出了以下四點原因:
前面說了,如果你是大牛,還用去找工作?工作都來找你了(大牛就是這么牛)。而你呢?還是好好反省反省吧!至于市場飽和,相信大家都早已經得到這個消息了。這其中既有移動互聯網前期積累的泡沫破裂的原因,也有大量新的iOS開發(fā)者不斷涌入的問題。我的iOS技術交流QQ群里時不時會有人出來吆喝一句“iOS已經爛大街了,沒人要了”。都爛大街了,好憂傷!至于用人單位要求越來越高,我就不解釋了,這個是你需要去好好反省反省的。最后我提到了小程序的沖擊。為什么這么說呢?因為我感覺到小程序把一部分人的視線轉移到了輕應用上面去了,這就導致一些native移動端的業(yè)務被小程序給搶走了。不過對一些業(yè)務比較簡單的場景來說,小程序的確是一種比較合適的解決方案。一個是節(jié)省成本;另一個是方便快捷。 總之,現在的iOS開發(fā)工作真的是越來越難找了 。
分析了大的市場行情,再來看一下公司。公司如人,人有靠譜和不靠譜之分,公司亦是如此。前段時間的面試讓我感覺到一個靠譜的公司招人還是挺難的。大牛不好請(關鍵是貴啊),小牛又看不上,而且還怕被忽悠,同時又要控制人力成本,所以用人單位考慮的要比應聘者多,他們一般情況下會找一個平衡點。即既要達到崗位要求,人力成本又要在可接受的范圍之內。所以在招聘上那是一個糾結??!稍微大一點的公司可能主要考慮聘者的技能了,因為大公司業(yè)務龐雜,規(guī)模和實力是小公司比不了的,對人才的渴求遠比小公司要大。如何進大公司呢?是不是又該反省了!??!
啰嗦的有點多,我的開場白就到這里吧!下面說一下我的面試經歷。
由于上家公司待的比較久,平常只顧擼碼,導致忽視了知識點的總結。一下進入面試狀態(tài),面對面試官那么多的技術點問題,還真有懵!所以第一天在面試 昆侖億發(fā)股份科技 和 51Talk 兩家公司時表現不理想。由于好久沒有參加過面試了,心理上沒準備好,語言組織的不好,技術點回答的不到位,導致整個面試過程感覺比較糟。完全不在狀態(tài)啊!相比第一家 昆侖億發(fā)股份科技 ,第二家 51Talk 表現的比較從容一點,一面我感覺問題不大??啥娴膯栴}感覺有點奇葩,有點吃不準。比如面試官司問你之前公司(P2P金融)有催收嗎?是怎么催收的?針對第一個問題我回答有,但第二個問題我該怎么回答。我有點方,不知道他想考什么。是考查我對公司業(yè)務的了解程度還是試懷疑我之前待的公司是否是一個不正當的打手公司。我笑笑,沒說話...不過挺郁悶的。我一個程序員一定要去了解催收部門的手段嗎???第一天就碰了倆釘子。不過也沒關系,成事開頭難嘛。隨即,我加強了技術點的學習總結和面試技巧的學習。
面試是切磋,更是交流。通過面試,即能發(fā)現自身的不足,又能對自己從事的工作有更全面的了解。接下來的面試我去了 滴滴、58同城、懂球帝、皇包車旅行、借貸寶、羅輯思維、美團、新浪 等公司。滴滴的面試是印象最好的。面試官比較隨和,專業(yè),干脆,幾個問題下來明顯的能感覺到對方內功很深; 58同城 主要問的最近的項目,你在項目中做了哪些東西以及工程中使用到了哪些比較好的技術點; 懂球帝 問的問題便向設計,不過面試官的態(tài)度不怎么友善,一副不耐煩的樣子; 皇包車旅行 問的主要是設計方面的問題,便向于架構方面; 借貸寶 是感覺最不好的一個,老是被打斷,都不能了好的表達自己了,所以聊到一半我就放棄離開了; 羅輯思維 面試官挺溫和的,感覺不錯; 美團 面試官是綿里藏針,要小心回答面試官的問題,不要打哈哈; 新浪 面我的是一個老程序員了(大牛),問的東西比較大,而且偏向后端的大并發(fā),有點小郁悶。為什么不找一個iOS程序員跟我聊呢?在跟不同的面試官溝通交流的時候的確學到了不少的東西,而且還增加了不溝通交流的技巧。最重要的就是跟很多同行過了招,發(fā)現了自身的很多不足不處,這會還在反省呢!
總結一下面試的要點:
做到以上幾點,感覺offer也離你不遠了!
經過辛苦的耕耘,最終拿到了4家公司的offer,對這份成績還算滿意。不過,前路仍然漫漫,需要更加努力!
最后還有一個比較痛的領悟:
ok!下面奉上本人總結的iOS面試題:
下面還有一些更干的面試題,你值得擁有!
招聘一個靠譜的 iOS
github里面有大神附上了答案
招聘一個靠譜的 iOS 答案
這里還有MrPeak大神的中級面試題
iOS 中級面試題
下面是答案
iOS 中級面試題 答案
明天放假!
祝小伙伴們“五一”國際勞動節(jié)快樂?。?/p>
更新
MrPeak 大神的中級面試題的答案鏈接中,有的答案不準確,僅供小伙伴們參考!