學編譯原理找得到工作嗎
① 學完整套 Python 找不到工作怎麼辦
秋招的時候 Python 的崗位確實不多,尤其是像 BAT 這樣的一線公司,基本上 Python 崗位都是運維開發和測試開發。二三線互聯網還是有不少 Python 崗位的,例如餓了么、愛奇藝、頭條等,而且因為投的人不多,所以競爭力比較小。
但是只會 Python 肯定是不行的,面試的過程中基本上沒有問過 Python 語言的相關東西,如果是面的後端開發,可能會問一下用的後端框架的源碼,然後就是各種 CS 的基礎知識:演算法與數據結構、操作系統、計算機網路、資料庫,這些問得比較多,然後就是簡歷中的項目了。
除了 Python 外,最好還要懂一門靜態語言(java/C++),一門函數式語言(Haskell/Lisp/Scala),大廠的面試其實對語言的要求不是很高,比如面過某 C++ 崗位,全程演算法都是用 Python 寫的,還和面試官討論了一下 range() 為什麼設計成左閉右開的形式。
想要用 Python 找到一份好工作(後端方向)
可以給一點小小的建議:
科班出身的話,各種基本知識應該是沒問題的,不是科班的話可能這一塊需要補一補(* 為備選);
演算法&數據結構:《演算法》、*《演算法導論》(搭配 MIT 6.006 食用更加)
操作系統&計算機組成原理:《深入理解計算機系統》
計算機網路:《自頂向下方法》、*《TCP/IP 協議(卷一)》、《UNIX 網路編程(卷一)》(強烈推薦,基本上和網路相關的比較難的一些問題這本書都有講,可以挑一部分看)
編譯原理:這個我沒具體看書,直接寫了幾個解釋器然後了解了個大概,書的話好像有《30天自製編譯器》比較淺顯易懂
資料庫:《MySQL 必知必會》、《高性能 MySQL》(從此各種資料庫優化面試題手到擒來)
Linux:《鳥哥的私房菜》、*《Linux 命令行與 Shell 腳本編程大全》
和面試官扯淡:《程序員修煉之道——從小工到專家》
Python 語法雖然很簡單,但是要看的東西其實很多
基本的語法看官方的 Tutorials 就可以了,Python 2 和 Python 3 都要會,之間的一些主要的區別要知道
學會了語法可以看《Python Cookbook》、《Fluent Python》,這兩本書相當於進階的書,學完功力 double,當然可能看一遍是不能完全吸收的,以後可以用到的時候再回去刷一下
看完上面兩本書並刷過一些代碼之後應該對 Python 的一些常用標准庫比較熟悉了,然後可以開始系統看一下標准庫(慢慢刷吧,這是個大工程)
熟悉某一個後端框架,我選的是 Flask,因為比較簡單,代碼也不多,花一點時間把源代碼看懂,知道一個 Flask app 從頭到尾的運行過程,有時間可以自己寫一個 web framework,實現基本的路由和 context 功能,當然還有 bottle 更簡單,原理大同小異,讀一下 PEP 3333 -- Python Web Server Gateway Interface v1.0.1
一般科班出身的在學 Python 前肯定會 Java/C++,這一部分也有很多的推薦,就不說了
其實面試過程中會問很多項目和設計類的問題,這種東西只能慢慢學習了,平時可以刷一刷 PyCon、各種博客、演講之類的來提高姿勢。
可以看到,要真的把上面所有的東西都學完不是一兩個月能搞定的,這還不包括准備項目的時間。如果真的能學得不錯了(70%)的樣子,應該拿個一線二線大廠的 offer 還是沒問題的。
② 學習編譯原理對從事應用軟體開發有何啟發
學習編譯原理和操作系統對編程能力對編程能力的作用在於:
1、學好了編譯原理,才可能編寫出高效,穩健,佔用內存少的程序。
2、學習操作系統對windows相關的編程很有幫助。如果是對操作系統關系不大的C/C++/c#,java之類的編程,關系不大。
編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。 編譯原理是計算機專業設置的一門重要的專業課程。雖然只有少數人從事編譯方面的工作,但是這門課在理論、技術、方法上都對學生提供了系統而有效的訓練,有利於提高軟體人員的素質和能力。
操作系統(Operating System,簡稱OS)是管理和控制計算機硬體與軟體資源的計算機程序,是直接運行在「裸機」上的最基本的系統軟體,任何其他軟體都必須在操作系統的支持下才能運行。
③ 編譯原理有必要學嗎
編譯原理作為計算機科學的重要課程,涵蓋了程序設計語言、編譯器、解釋器和虛擬機等知識領域。盡管它在某些特定的應用場景中並不是必須掌握的技能,但對於希望深入理解計算機科學、軟體開發及計算機體系結構的個人而言,學習編譯原理至關重要。
深入了解計算機體系結構是學習編譯原理帶來的好處之一。通過學習,可以更好地掌握內存管理、指令集、寄存器、中斷等底層結構的知識,這對於開發高效、穩定的軟體至關重要。
提高軟體開發能力也是學習編譯原理的重要益處。學習編譯原理有助於理解編程語言的設計與實現,掌握編譯器和解釋器的構造原理,從而提升軟體開發的專業技能。
掌握優化技術同樣是學習編譯原理的關鍵。編譯器的一項重要任務是對源代碼進行優化,以提升程序的運行效率。學習編譯原理可以幫助掌握各種優化技術,如代碼重排、循環展開、常量折疊等,從而開發出更加高效的軟體。
拓寬職業發展道路是學習編譯原理的另一個顯著優勢。掌握編譯原理的知識可以讓你在編譯器開發、虛擬機設計、嵌入式系統開發等領域找到工作機會。此外,編譯原理的知識還可以應用於人工智慧、機器學習等其他領域,為職業發展提供更多可能性。
綜上所述,盡管編譯原理在某些應用領域並不是必需的,但它對於深入了解計算機科學、提高軟體開發能力、拓寬職業發展道路的人來說,無疑具有重要的價值。
