BAT、華為網易等大公司軟體開發職位要求的計算機網路基礎和資料庫知識,相關書籍有哪些?

本菜鳥還在校,明年找工作,在此先謝謝大家!

-----我-----是------可愛-----的-----分割線------------

看到各位給我推薦的各種書我非常感謝,我很想花時間趕緊看完,但是昨天的導師例會讓我又糾結了,老師說看書進步慢,應該做項目,那麼問題來了,作為軟體在校生,自己如何去找軟體項目並著手去編碼? http://zhi.hu/bH0Z


其實一般都是筆試再加面試(某些公司是機試加面試),筆試的話主要是C/C++語言(也許一些特殊的職位是Java,JavaScript等),操作系統(如死鎖的條件,線程與進程的區別,同步與互斥等),計算機網路(如TCP與UDP的區別,OSI七層模型,TCP三次握手等),數據結構與演算法(如排序的時間複雜度,空間複雜度,穩定性,簡單圖論的BFS,DFS等),計算機組織與結構(如補碼,CISC與RISC的區別等),資料庫(如主鍵與外鍵,select裡面套上group by, having等SQL語句),然後一些數學味道的題目(如概率,相遇問題等),一些實際項目抽象出來的設計題目(如海量數據處理等),我覺得基本上校招的筆試基本上就在這個框框裡面了,感覺國內校招的筆試都是一套模子,你多參加幾次都會開始鄙視的,覺得毫無創意。對於書籍來說的話,操作系統我比較推薦現代操作系統,數據結構比較推崇數據結構與演算法分析:C語言描述(Mark Allen Weiss),若你還需要針對找工作而言的話,可以再看看編程珠璣,編程之美,劍指Offer,你會發現很多改編題甚至原題。而至於面試的話,很多時候要看緣分,當然最好是有拿得出手的項目,有句話不是叫Talk is cheap,show me the code么。校招普遍難度不高,不要太緊張,尤其是國內大量需要碼農的情況下,但是你要需要應聘一些高級職位,如架構師,編譯開發工程師,操作系統內核工程師等,那可能不是一朝一夕可以彌補上來的,希望對你有所幫助吧。


題主既然這樣問了,那我列一堆找工作的書單好了

C/C++語言入門:

C程序設計語言,C++ primer;

進階:

Effective C++ More effective C++ STL標準程序庫,effective STL,STL源碼剖析;

高級:

深度探索C++對象模型,

演算法與數據結構:

劍指offer,編程之美,演算法導論,Leetcode,cc150,編程珠璣;

進階:推薦劉汝佳的書:演算法競賽系列,挑戰程序設計競賽;

操作系統:現代操作系統,死鎖,進程,虛擬內存這些必須要十分清楚,Linux肯定要十分熟悉啊,Linux編程又是一大塊,還有Linux內核。。

網路這一塊:UNIX環境高級編程,UNIX網路編程,TCP/IP詳解,陳碩有本書叫做Linux多線程網路編程;

資料庫:推薦學習mysql,簡單上手,很好入門,但是菜鳥和高手寫的代碼性能差別很大;要深入學習的話,光會用肯定不夠,可以去看看mysql技術內幕,最近很火的redis也可以學學;

程序的底層編譯與鏈接與運行:程序員的自我修養,深入理解計算機系統;

編譯:龍書,虎書,鯨書,我感覺太理論了,推薦編譯器設計;

腳本語言也要學一學啊,太方便了,Python啊,shell啊;

設計模式也要明白。。

總之要看的書很多。


幾個吐槽吧。

華為和其他的比難度低很多,基本有基礎就行了,計算機相關的不用太在意,不相關的,找找考研書看看就行。

batn以及大眾,美團,360,去哪兒等等……這些企業的套路都差不多。

基本是一次筆試+若干面試,

一般的研發崗來講,

需要的基礎知識:編程語言基礎,

演算法和數據結構,操作系統,網路等等吧。

另外,要有一定的項目經驗,自己做的東西要有的說才行。

至於推薦書呢……

首推專業課課本……先吃飯去。呆會再答

------------------

我發現我看多了,

樓主的問題,給出答案:

一般研發崗對這兩者考察都不多,

樓主找一下你們學校計算機專業課的教材就行了。

至於國外的磚頭呢,當成工具書吧,有的東西不太理解的時候去翻翻就好了。


推薦閱讀:

如何清晰定位目標,並高效的寫一個工具,既不會和github重複,有自己的特點,從而不是造輪子?
如何看待每天上班十二小時,公司領導依然覺得員工不夠努力認真?
作為程序員、技術更重要還是創意更重要?
技術轉管理有什麼經驗談?
作為一個非計算機專業出生的學生,以後想從事軟體開發的工作,但是沒有項目經驗,怎麼在以後求職中獲得優勢?

TAG:軟體開發 | 軟體工程師 | C | 研究生就業 | 專業書籍推薦 |