移動互聯網下半場 iOS 程序員面試真經,讓你進入 BAT 再也不是夢

前言:前端

其實說實話,做爲程序員,最起碼得有 80% 的人都想進入大公司工做,好比:BAT ,小米,滴滴,今日頭條,美團等這樣的大公司或者移動互聯網界的明星企業。程序員

進大公司的好處顯而易見,福利好,待遇高,工做穩定,不像不少創業小公司說倒閉就倒閉,尤爲是移動互聯網進入下半場以後,不少創業公司都相繼倒閉,並且移動開發者也愈來愈飽和,隨着程序員愈來愈多,天然就進入了激烈競爭的惡劣環境,優勝劣汰的天然規律是不可逃避,也規避不了的。面試

據 GitHub 統計,就今年一年加入 GitHub 的中國程序員就有 70 萬,本身想一想吧,競爭得有多激烈。算法

即便有 20% 的程序員不想進入大公司,也無非就是要麼就是認清了本身的現實,本身並非那麼天賦異稟,也並非那麼熱愛編程,有自知之明的心態,在個小公司幹也挺好,倒閉了大不了再換,反正 BAT ,我也進不去。編程

要麼就是人家就是 BAT 的大神想出來創業當移動互聯界的創業家,想功成名就,即便創業失敗,我依然能夠鶴立雞羣,瀟灑回到 BAT 的世界,帥氣的依靠本身在業界的名聲依然可以獲得一份好的工做。後端

說着說着,好像有點 二八定律 的感受。NO,上面的 80% 和 20% 是我本身的不徹底統計,沒必要當真,舉個例子而已。微信

做爲一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個個人iOS交流羣:638302184,無論你是小白仍是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經驗,討論技術, 你們一塊兒交流學習成長!但願幫助開發者少走彎路。cookie

點擊此處如下資料在羣文件可自行下載


 

面試準則網絡

關於面試這件事,咱們得知道一個面試準則,尤爲是在移動互聯網進入下半場的今天。session

最近不少朋友面試受挫,並非說技術有多差,可是就是很受打擊,由於在資本寒冬的今天,移動互聯網的下半場,程序員要想過上好日子,就得去大公司,如今已經逐步進入拼技術的時代了,因此技術依然愈來愈重要,這是在小公司沒法體現和提高的。

而他們之因此受打擊是由於平時作項目,作產品也能夠獨立完成,甚至很好的完成,可是面試失敗的面試是基礎太差。因此,你在小公司確實能夠可以很好的掌握並作一個項目,可是大公司重視的是你的基礎啊。因此要清楚這麼一個準則: 面試,大公司重基礎,小公司重能力 (這裏的能力指:能不能立刻上手作一個項目的能力)。

進一步解釋一下,爲何我在上面說:如今已經逐步進入拼技術的時代了?首先,移動互聯網剛剛興起的前 10 年是一個高速發展,高速擴張,野蠻收割的時代,就是不論技術好仍是差,只要可以立刻作出產品來就好技術,就會經過營銷,運營,資本等手段得到用戶,而得到用戶,佔領市場以後,就到了拼技術,拼品質的時代了。而如今移動互聯網的下半場就是一個拼技術的時代了。

舉個簡單的例子,微博,你作出來很容易,可是作好就很難了。明星出個軌,公佈個戀情分分鐘就會讓你癱瘓,這不是產品,營銷,資本可以解決的問題,這是技術纔可以解決的問題。你會作微博不是能力,你能讓微博不癱瘓纔是能力。

前幾天在知乎上看到一個問題特別有意思,問:作一個微信很難麼?有一個回答很對,說:作一個微信,10 我的用不難,100 個不難,讓近 10 億的用戶用,就難了。此處省略一萬字,這個話題要是聊透,其實可以還寫一篇文章。

面試準備

我在前面說了,面試慘不忍睹的就是由兩個問題致使的,

一是,沒有認清本身;

二是,沒有了解公司。

總結成一句話就是 準備不足 。

咱們既然瞭解了面試準則,就應該對症下藥才行,這樣纔不至於慘不忍睹。大公司既然重基礎,那麼面試前必定要好好學習和準備一下這方面的知識。幹什麼事以前,必定要充分了解狀況,古人說的話,仍是挺對的,畢竟是 2000 多年來總結出來的經驗,面試就是戰場,知己知彼才能百戰不殆。

舉個例子:小猿在一家創業公司從事了兩年的 iOS 開發,可以獨立開發一款軟件,技術仍是能夠的,效率挺高的,總能快速完成經理交給的任務,平時也會在 GitHub 上提交一些開源代碼,分享了一些開源庫,star 數五六百,好的上千,熟悉使用經常使用網絡框架,還會 MVP,MVVM 這樣的架構。

感受本身去 BAT 這樣的公司面試沒問題,但是,仍是被打擊到了。人家回覆說:學習能力,開源精神都挺好的,就是基礎太差。看到了嗎?會使用框架,封裝個簡單的庫,可以作出產品來並非多大的能力,作好是須要基礎的。

上面的例子的問題,典型就是不瞭解本身,也不瞭解大公司的套路,準備不足,因此才失敗的。平時學習的時候,應該要知其然知其因此然才行,而後再多學學算法,原理和一些計算機基礎就更完美了。並非會作就行,基礎紮實,才能作得更好。

要想成就不敗金身,那咱們就一塊兒來知己知彼一下。那大公司到底喜歡面試什麼樣的問題呢?我該如何準備呢?我經過朋友瞭解到,總結以後就兩點:算法和原理。說這些都是概念,來點實際的,給你們舉一些例子:

一、你通常是如何優化你的APP的?

二、push Notification原理

三、iOS 中內省的幾個方法?

四、class方法和objc_getClass方法有什麼區別?

五、一個int變量被__block修飾與否的區別?

六、什麼是離屏渲染?什麼狀況下會觸發?該如何應對?

七、KVC的賦值和取值過程是怎樣的?原理是什麼?

八、iOS中UITableViewCell的重用機制原理?

九、RunLoop剖析

十、內存管理、自動釋放池與循環引用

十一、剖析Block

十二、SDWebImage原理

1三、如何高性能的給 UIImageView 加個圓角?

1四、瞭解CoreData

1五、簡述內存管理基本原則

1六、GCD死鎖問題解讀

1七、談一談網絡中的 session 和 cookie?

好了,就先舉這些例子,以上的問題來自於 BAT , 小米,滴滴,360,今日頭條,愛奇藝等。大家先感覺一下,是否是會被虐呢?

經過上述面試題你們也基本看到了,有底層,有算法,有原理。

你只要在面試前,認真準備,充足準備,應該不會有多大的困難。其實大部分程序員面試大公司失敗的緣由是本身準備不足。大公司去校招成功率比較大的緣由是大學學的一些基礎沒有忘掉,而如今的你,只注重實戰,而不注重基礎。可是在拼技術的時代,基礎很重要,基礎和原理懂得的更多,作的東西纔會更加牢固。

積累纔是根本

前面說了,經過了解面試準則,面試準備,那都是一種臨時抱佛腳的方法,讓你快速麪試成功的一種捷徑罷了。其實平時的學習和積累纔是根本。經過了解大公司的要求,咱們在小公司也應該時刻嚴格要求本身,不要只注重實戰,不要不在意性能而僅僅去說我實現了就好。

咱們在平時的工做和學習的過程當中,要時刻保持學習之心,不只僅注重業務的實現,有時間拿起書來看看基礎和原理,瞭解一些源碼,多作一些思考,其實總會慢慢進步的。

再囉裏囉嗦的舉個例子吧,好比:你最近看到社區裏流行使用 MVP 模式,你就會去看一下 MVP 後,找一個開源的模板,下載下來,本身也開始用,不要僅僅停留在使用上,

你應該思考:

爲何你們都喜歡使用 MVP 模式?

這樣作的好處是什麼?

我還能在這樣的基礎上作優化嗎?

觸類旁通的把本身問倒,打破砂鍋問到底要用到本身身上。

總結

說一千道一萬,不如本身去行動。

要想在移動互聯網的下半場是本身佔有一席之地,那就得從如今開始,從今天開始,立刻嚴格要求本身,既重視業務實現能力,也重視基礎和底層原理。

基礎夯實好了,高樓纔可以平地而起,穩如泰山。什麼高併發致使的崩潰啊,什麼明星緋聞啊,你的前端不怕,後端更不用怕。下次吹牛能夠這麼說:三對明星同時出軌,個人程序也不會癱瘓。

掃碼進交流羣,有技術的來閒聊,沒技術的來學習

相關文章
相關標籤/搜索