前幾天參加了武漢的一家互聯網公司的面試,總體感覺一般,最后也沒有獲得終面資格,這次面試暴露了一些問題,也讓我體會到了自己的才疏學淺,所以還是總結一下吧。
首先到了公司并沒有見到面試官,直接就是筆試,要求是盡量全寫,問題如下:
計算機基礎類
- 線程有哪幾個狀態
- 狀態碼200,404,500分別表示什么意思
- 你知道的所有排序
Java基礎類(Java我是真的不會,前幾個問題也記不清楚了……)
- 手寫冒泡排序算法(任何語言均可)
iOS基礎類
- 屬性的幾個修飾詞分別代表什么
- 使用ARC的好處是什么,簡述ARC的基本原理
- 數組和指針的區別
- 一個C語言的指針問題
- 簡述一下MVC模式
- 畫一下iOS的系統架構
數據庫基礎
- 索引的作用是什么,缺點是什么
- 寫一個sql語句,涉及到排序和選擇
個人發展
- 最近在讀什么技術方面的書
- 對未來的打算
- 如果入職,打算如何幫助公司更好的發展
- 對公司了解嗎,使用過公司的產品嗎
問題的涉及面還是很廣泛的,計算機基礎,iOS基礎,數據庫等等都有涉及,有幾個問題我還真的答不上來,下面我寫了部分問題的答案,如果有不對的地方歡迎大家提出來,一起學習一起進步:
線程有哪幾個狀態:創建,就緒,運行,阻塞,死亡。
狀態碼含義:(參考:HTTP狀態碼 - 維基百科,自由的百科全書)
- 200:請求已成功,請求所希望的響應頭或數據體將隨此響應返回。
- 404:請求失敗,請求所希望得到的資源未被在服務器上發現。沒有信息能夠告訴用戶這個狀況到底是暫時的還是永久的。假如服務器知道情況的話,應當使用410狀態碼來告知舊資源因為某些內部的配置機制問題,已經永久的不可用,而且沒有任何可以跳轉的地址。404這個狀態碼被廣泛應用于當服務器不想揭示到底為何請求被拒絕或者沒有其他適合的響應可用的情況下。
- 500:服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說,這個問題都會在服務器的程序碼出錯時出現。
使用ARC的好處是可以讓程序員不用再去手動管理內存,使得內存管理更加高效,ARC的原理很簡單:一個對象被引用一次就加1,被放棄一次引用就減1,如果減為0那么該對象就被釋放。
數組和指針的區別推薦大家看一下這篇文章:數組和指針的區別
MVC模式:iOS常見面試題
iOS系統架構:iOS系統架構
索引的作用和好處:數據庫索引的作用和優點缺點
個人發展這塊兒回答就比較輕松了,因為iOS知識更新頻率太快,而且我學習的方向主要是swift,所以我一般不怎么看紙質的書,我個人更喜歡看一些比較出名的博客,例如RayWenderlich和AppCoda。
PS:如果你知道你要去面試的公司的產品的話,最好提前下載下來用一下,說不定面試官就要問你對他們公司產品的看法。
面試
筆試結束了就是面試,講真面試時間挺短的,可能是面試官問的我都不太了解……首先就是自我介紹,接下來面試官看了我做的項目,然后問了下項目中遇到的問題(這個幾乎必問),這些都還好,后面的就有點感覺力不從心了,大概問題如下:
你的這個APP與服務端有交互嗎?
你之前嘗試過與服務端進行過通信嗎?
你熟悉那些線上的數據庫?
了解Hybrid模式嗎?
是否清楚Hybrid模式中Web和Native如何實現通信?
對公司的產品有什么看法和建議?
你有什么問題嗎?
因為之前從來沒有在正式項目中與服務端進行過交互,所有的操作都是在本地進行的,數據也是用SQLite保存在了本地,網絡編程方面的東西還在學習中,所以這塊基本上全崩……還需繼續努力學習啊。
總的來說,第一次面試學到的東西很多,也讓我清楚地認識到了自己的不足,不得不說,除了基礎知識,網絡編程現在基本是必備技能,而熱門技術也是必須要了解的加分項。