您好,登錄后才能下訂單哦!
前言:
其實說實話,作為程序員,最起碼得有 80% 的人都想進入大公司工作,比如:BAT ,小米,滴滴,今日頭條,美團等這樣的大公司或者移動互聯網界的明星企業。
進大公司的好處顯而易見,福利好,待遇高,工作穩定,不像很多創業小公司說倒閉就倒閉,尤其是移動互聯網進入下半場之后,很多創業公司都相繼倒閉,而且移動開發者也越來越飽和,隨著程序員越來越多,自然就進入了激烈競爭的惡劣環境,優勝劣汰的自然規律是不可逃避,也規避不了的。
據 GitHub 統計,就今年一年加入 GitHub 的中國程序員就有 70 萬,自己想想吧,競爭得有多激烈。
即使有 20% 的程序員不想進入大公司,也無非就是要么就是認清了自己的現實,自己并不是那么天賦異稟,也并不是那么熱愛編程,有自知之明的心態,在個小公司干也挺好,倒閉了大不了再換,反正 BAT ,我也進不去。
要么就是人家就是 BAT 的大神想出來創業當移動互聯界的創業家,想功成名就,即使創業失敗,我依然可以鶴立雞群,瀟灑回到 BAT 的世界,帥氣的依靠自己在業界的名聲依然能夠得到一份好的工作。
說著說著,好像有點?二八定律?的感覺。NO,上面的 80% 和 20% 是我自己的不完全統計,不必當真,舉個例子而已。
作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:638302184,不管你是小白還是大牛歡迎入駐?,分享BAT,阿里面試題、面試經驗,討論技術,?大家一起交流學習成長!希望幫助開發者少走彎路。
面試準則
關于面試這件事,我們得知道一個面試準則,尤其是在移動互聯網進入下半場的今天。
最近很多朋友面試受挫,并不是說技術有多差,但是就是很受打擊,因為在資本寒冬的今天,移動互聯網的下半場,程序員要想過上好日子,就得去大公司,現在已經逐步進入拼技術的時代了,所以技術依然越來越重要,這是在小公司無法體現和提升的。
而他們之所以受打擊是因為平時做項目,做產品也可以獨立完成,甚至很好的完成,但是面試失敗的面試是基礎太差。所以,你在小公司確實可以能夠很好的掌握并做一個項目,但是大公司重視的是你的基礎啊。所以要清楚這么一個準則:?面試,大公司重基礎,小公司重能力?(這里的能力指:能不能馬上上手做一個項目的能力)。
進一步解釋一下,為什么我在上面說:現在已經逐步進入拼技術的時代了?首先,移動互聯網剛剛興起的前 10 年是一個高速發展,高速擴張,野蠻收割的時代,就是不論技術好還是差,只要能夠馬上做出產品來就好技術,就會通過營銷,運營,資本等手段獲得用戶,而獲得用戶,占領市場之后,就到了拼技術,拼品質的時代了。而現在移動互聯網的下半場就是一個拼技術的時代了。
舉個簡單的例子,微博,你做出來很容易,但是做好就很難了。明星出個軌,公布個戀情分分鐘就會讓你癱瘓,這不是產品,營銷,資本能夠解決的問題,這是技術才能夠解決的問題。你會做微博不是能力,你能讓微博不癱瘓才是能力。
前幾天在知乎上看到一個問題特別有意思,問:做一個微信很難么?有一個回答很對,說:做一個微信,10 個人用不難,100 個不難,讓近 10 億的用戶用,就難了。此處省略一萬字,這個話題要是聊透,其實能夠還寫一篇文章。
面試準備
我在前面說了,面試慘不忍睹的就是由兩個問題導致的,
一是,沒有認清自己;
二是,沒有了解公司。
總結成一句話就是?準備不足?。
我們既然了解了面試準則,就應該對癥下藥才行,這樣才不至于慘不忍睹。大公司既然重基礎,那么面試前一定要好好學習和準備一下這方面的知識。干什么事之前,一定要充分了解情況,古人說的話,還是挺對的,畢竟是 2000 多年來總結出來的經驗,面試就是戰場,知己知彼才能百戰不殆。
舉個例子:小猿在一家創業公司從事了兩年的 iOS 開發,能夠獨立開發一款軟件,技術還是可以的,效率挺高的,總能快速完成經理交給的任務,平時也會在 GitHub 上提交一些開源代碼,分享了一些開源庫,star 數五六百,好的上千,熟悉使用常用網絡框架,還會 MVP,MVVM 這樣的架構。
感覺自己去 BAT 這樣的公司面試沒問題,可是,還是被打擊到了。人家回復說:學習能力,開源精神都挺好的,就是基礎太差。看到了嗎?會使用框架,封裝個簡單的庫,能夠做出產品來并不是多大的能力,做好是需要基礎的。
上面的例子的問題,典型就是不了解自己,也不了解大公司的套路,準備不足,所以才失敗的。平時學習的時候,應該要知其然知其所以然才行,然后再多學學算法,原理和一些計算機基礎就更完美了。并不是會做就行,基礎扎實,才能做得更好。
要想成就不敗金身,那我們就一起來知己知彼一下。那大公司到底喜歡面試什么樣的問題呢?我該如何準備呢?我通過朋友了解到,總結之后就兩點:算法和原理。說這些都是概念,來點實際的,給大家舉一些例子:
1、你一般是如何優化你的APP的?
2、push Notification原理
3、iOS 中內省的幾個方法?
4、class方法和objc_getClass方法有什么區別?
5、一個int變量被__block修飾與否的區別?
6、什么是離屏渲染?什么情況下會觸發?該如何應對?
7、KVC的賦值和取值過程是怎樣的?原理是什么?
8、iOS中UITableViewCell的重用機制原理?
9、RunLoop剖析
10、內存管理、自動釋放池與循環引用
11、剖析Block
12、SDWebImage原理
13、如何高性能的給 UIImageView 加個圓角?
14、了解CoreData
15、簡述內存管理基本原則
16、GCD死鎖問題解讀
17、談一談網絡中的 session 和 cookie?
好了,就先舉這些例子,以上的問題來自于 BAT , 小米,滴滴,360,今日頭條,愛奇藝等。你們先感受一下,是不是會被虐呢?
通過上述面試題大家也基本看到了,有底層,有算法,有原理。
你只要在面試前,認真準備,充足準備,應該不會有多大的困難。其實大部分程序員面試大公司失敗的原因是自己準備不足。大公司去校招成功率比較大的原因是大學學的一些基礎沒有忘掉,而現在的你,只注重實戰,而不注重基礎。但是在拼技術的時代,基礎很重要,基礎和原理懂得的更多,做的東西才會更加牢固。
積累才是根本
前面說了,通過了解面試準則,面試準備,那都是一種臨時抱佛腳的方法,讓你快速面試成功的一種捷徑罷了。其實平時的學習和積累才是根本。通過了解大公司的要求,我們在小公司也應該時刻嚴格要求自己,不要只注重實戰,不要不在乎性能而僅僅去說我實現了就好。
我們在平時的工作和學習的過程中,要時刻保持學習之心,不僅僅注重業務的實現,有時間拿起書來看看基礎和原理,了解一些源碼,多做一些思考,其實總會慢慢進步的。
再啰里啰嗦的舉個例子吧,比如:你最近看到社區里流行使用 MVP 模式,你就會去看一下 MVP 后,找一個開源的模板,下載下來,自己也開始用,不要僅僅停留在使用上,
你應該思考:
為什么大家都喜歡使用 MVP 模式?
這樣做的好處是什么?
我還能在這樣的基礎上做優化嗎?
舉一反三的把自己問倒,打破砂鍋問到底要用到自己身上。
總結
說一千道一萬,不如自己去行動。
要想在移動互聯網的下半場是自己占有一席之地,那就得從現在開始,從今天開始,馬上嚴格要求自己,既重視業務實現能力,也重視基礎和底層原理。
基礎夯實好了,高樓才能夠平地而起,穩如泰山。什么高并發導致的崩潰啊,什么明星緋聞啊,你的前端不怕,后端更不用怕。下次吹牛可以這么說:三對明星同時×××,我的程序也不會癱瘓。
掃碼進交流群,有技術的來閑聊,沒技術的來學習
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。