www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 芯聞號 > 充電吧
[導讀]軟件工程師生存指南:面試準備、工作經(jīng)驗和實用工具

軟件工程師是令人羨慕的職業(yè)。但是如何才能拿到這份工作?又如何才能做好這份工作呢?擁有相關經(jīng)驗的 Valeri Alexiev 提供了相關建議和工具。其中包括了如何準備面試、如何以軟件工程師的身份工作以及如何持續(xù)改進方面的經(jīng)驗之談。

我剛開始工作的頭幾年是緊張學習的時間。

我得面對現(xiàn)實,成為軟件工程師需要有很多技能,這些我之前都不知道?;仡欉^去,顯然學會那些東西是很好的。

所以我就根據(jù)自己及其他人的經(jīng)驗寫了這篇指南來幫助入行的新人。

本文將覆蓋以下內(nèi)容:

  1. 如何盡力做好面試

  2. 如何在軟件工程師的角色中生存(及發(fā)展)

  3. 考慮持續(xù)改進時可以參考的資源

  面試

當你開始軟件工程職業(yè)生涯時,你得面對一個無可爭議的事實。面試很惡心。

參與其中的每個人都覺得很惡心。既被人面試過又面試過別人的我可以證明,面試是一項極其耗時、極其有壓力的工作,并且面試其實并不是將來工作表現(xiàn)一個的好的指示器。但不管怎樣,這都是一個必要之惡,你和你的簡歷最好還是做好準備為妥。

  做好戰(zhàn)斗準備

如果你考慮做軟件過程,確保了解一些最常見的編程面試問題,比如“FizzBuzz”:

寫一個程序打印從 1 到 100 的數(shù)字。但是如果數(shù)字是 3 的倍數(shù)的話則打印“Fizz”,如果數(shù)字是 5 的倍數(shù)則打印“Buzz”。如果同時是 3 和 5 的倍數(shù)則打印“FizzBuzz”。

來自 Coding Horror

聽起來很簡單,是吧?

好吧,但其實絕大部分面試者都沒能通過這一簡單的測試,且不說更復雜的變種了。

我個人曾經(jīng)見過很多角逐資深崗位的候選人在擁有完全互聯(lián)網(wǎng)訪問的情況下沒能通過這一測試。所以如果你的簡歷上面列有編程語言的話,確保你知道如何用它來編寫實現(xiàn) FizzBuzz 程序。否則的話,你只不過是在浪費所有人的時間,包括你自己的。

當然,為了在面試過后生存,你需要知道的不僅僅只有 FizzBuzz。你還需要確保你知道:

  • 基礎的數(shù)據(jù)結構和算法:比如鏈表、數(shù)組、樹以及排序。

  • 要知道所選擇語言的常見解決辦法,比如字符串是否恒定,內(nèi)存是如何管理的。

  • 類似類與對象,以及繼承等面向?qū)ο缶幊痰母拍睢?/p>

在職業(yè)生涯開始時,你需要就這些問題做好準備,因為你并沒有經(jīng)歷去證明自己能做好這份工作。在準備面試的時候有兩個資源我會經(jīng)常推薦:

  • 《Cracking the Coding Interview(破解面試代碼)》,這是一本非常好的書,里面介紹了很多的編碼問題和解決方案,同時還總結了解決這些問題需要了解的東西。

  • CodeWars?,這個網(wǎng)站收集了大量的編程問題,你可以運用各種語言在瀏覽器里面去解決這些問題。最有用的部分是看看別的用戶是如何解決同樣問題的。這樣你就可以看到解決相同問題的不同辦法,并且學到你所選語言的新工具。

  賦予自身額外優(yōu)勢

為了讓自己取得那點額外優(yōu)勢,有幾件事情你可以去做。

首先,學會如何溝通你的經(jīng)驗。你應該進行一次電梯演講來將你的簡歷總結成連貫的、打動人的個人介紹。

此外,要了解自己的簡歷!聽起來很蠢是吧,但我就見過很多面試者連解釋清楚自己簡歷上的特定事項都很困難。你應該能夠回答任何有關你列上簡歷的經(jīng)歷方面的問題,并且解釋清楚這一經(jīng)歷如何讓你成為本工作更好的候選人。

接著,要在 GitHub(或者其他的公共代碼庫)上面有一些編碼的例子。

眼見為實,面試官能夠看到你的代碼將創(chuàng)造奇跡。此外,這還證明了你對版本控制系統(tǒng)有了解。

你的代碼例子不需要太復雜,但是一定要整潔,能夠顯示出好的編碼實踐。這是你展示自己在沒有編碼面試所帶來的時間壓力情況下代碼寫得如何的機會。

一旦你做完了上面的事情后,就得考慮參與一個開源項目了。參加開源項目能表明你能夠在已有代碼庫基礎上工作并且可以與其他程序員一些協(xié)作。

這是你在無需實際進入一個行業(yè)環(huán)境的情況下最接近在行業(yè)環(huán)境下編程的方式了。這也是目前為止最難最耗時的一項任務,所以等到你把前面我提到的比較容易取得的果實都摘完之后再干這件事。

  面試你的面試官

在找工作的匆忙與壓力之下,很多候選人都忘了面試是一個雙向的過程。在公司努力尋找這份工作的合適人選時,你也應該設法弄清楚這家公司適不適合你。

確保你也要提出以下一些問題,哪怕對方是以電子郵件的形式回復你。要意識到公司經(jīng)常把不遵循最佳實踐說成是一項技能,所以要體會其言外之意。

以下是一些你可以去提問的例子:

  “對我來說典型的工作日會是什么樣的?”

知道特定崗位預期的樣子很重要,因為軟件工程工作差別相當大。比方說你的工作既可能是維護服務器,也可能是直接跟客戶溝通。

危險信號:“我不大肯定?!?→?意味著面試你的那個人不在你的團隊,或者他們對為什么要招你并沒有明確的想法。

 “你們是如何測試軟件的?”

理想情況下,驗證代碼質(zhì)量應該是單元測試、人工測試以及自動化測試的結合。

危險信號:“我們都寫不出 bug,哈哈。” →?那些人正是會寫出 bug 的人。

 “你們使用什么樣的版本控制系統(tǒng)?”

版本控制系統(tǒng)對于協(xié)作極其有用,在職業(yè)環(huán)境下沒有理由不使用。

危險信號 #1:“額,版本控制系統(tǒng)?” →?快跑,跑得越遠越好。

永遠記得使用版本控制。

危險信號 #2:“<插入不知名的或者定制的 VCS>” →?這表明他們很有可能沒有跟上時代并且很久沒有升級自己的基礎設施了。

  “你們進行同行評審嗎?”

同行評審,或者讓別人看看你的代碼再把它放進代碼庫,這是識別愚蠢錯誤的極好辦法,同時也是開始你的職業(yè)生涯時一個關鍵的培訓機會。

危險信號:“我們相互信任!”→很有可能那些資深開發(fā)者對自己的代碼非常警惕不想給人看也不擅長接受反饋。

  “你們的繼續(xù)教育計劃是什么樣的?”

作為一名軟件工程師意味著當新技術出現(xiàn)、成熟并以令人眼花繚亂的速度走向過時的時候要不斷學習。因此,很多公司都有培訓預算用來買大學和在線課程、會議或者內(nèi)部交流。

危險信號:“你是說在閑暇時間讀讀網(wǎng)上的東西?” →這家公司要么資金緊張,要么把開發(fā)者視為可替代的,而不是長期投資。

  “你們采用的軟件開發(fā)流程是什么?”

無論實際的細節(jié)是什么,流程對于軟件工程都至關重要。至于哪些東西對于優(yōu)化流程做出了貢獻可能大家會有不同的看法,但僅就項目的工作方式達成一致就能將混亂最小化并且確保每個人都能達成共識。

危險信號:“我們的流程受到了自由風格的爵士的影響?!?→ 很有可能整個部門都處在救火模式,總是不斷地從緊急跳到另一個緊急狀態(tài)而缺乏任何明確的目標。

  “你們是如何處理技術債務的?”

技術債務是過時技術以及代碼庫中臨時應急的解決方案的累積。處理好技術債務對于代碼的長期健康很重要,這件事情應該持續(xù)地做。

危險信號:“我們只關注新功能?!?→ 他們的代碼庫一團糟或者很快就會一團糟。

  “你們的公司文化是什么樣的?”

公司文化也許是個非常含糊的概念,但即便像開放辦公室還是小隔間這樣的小事情都會顯著改變你與同事的日常互動。這方面沒有普遍性的危險信號,但是要確保他們的答案是你可以按照每周 40+ 小時的節(jié)奏持續(xù)相處數(shù)年的東西。

  以軟件工程師的身份工作

在這個階段,如果你面試過程中表現(xiàn)不錯并且喜歡面試官回答你問題的方式,你被錄用的可能性就很高了。

祝賀,你正式成為一名工程師了!

那現(xiàn)在又該如何呢?好吧,現(xiàn)在是時候重新學習大量編碼和工作方面的東西了。既然我們是程序員,我們就從討論代碼開始。

  好的行業(yè)代碼

好的行業(yè)代碼有以下屬性,依序是:

  1. 可讀性,因為代碼用來讀和維護的頻次要高于寫。代碼的意圖必須清晰,讓其他開發(fā)者在多年后依然理解。

  2. 防御性,就是要遵循防御性編碼的最佳實踐。防御性編碼本身就是一個課題,不過其要義是:你必須確保自己所寫的類和方法的不恰當使用不會導致你的代碼搞得軟件都崩潰。

  3. 優(yōu)化,位列清單的最后未知,因為大多數(shù)時候你并不需要真正去擔心這個。這并不意味著你應該編寫糟糕代碼,在存在線性解決方案的情況下以O(n3)的效率去做某個東西。但開發(fā)者通??释麌L試并且會在不需要的情況下過度優(yōu)化,卻犧牲了代碼的可讀性和防御性。你永遠都應該能夠證明犧牲了這些屬性的特定優(yōu)化是值得的。

現(xiàn)在你了解了如何去編寫良好的行業(yè)代碼了。

  編碼的工作你不會干太多的

說出來也許有點令人吃驚,但是大多數(shù)時候你都不用寫新代碼,而是相反,要做:

  • 調(diào)試

  • 讀已有代碼

  • 開會或者寫電子郵件

  • 研究該怎么做以便不用寫代碼

因此編碼以外的技能對你的職業(yè)一樣關鍵。

調(diào)試和閱讀代碼

  • 調(diào)試遠不僅僅是用打印語句。一切使用廣泛的語言和技術棧都有各種強大的工具。學會使用它們,因為這些會讓調(diào)試輕而易舉,節(jié)省你無數(shù)的時間。

  • 理解代碼庫。大多數(shù)技術棧都有某種代碼圖譜生成工具來幫助你理解代碼庫的結構。企業(yè)級的 IDE 通常都內(nèi)置了那種功能。你還可以利用 ReSharper、grep?或者 Sourcegraph 之類的工具來探索代碼。

  • 理解產(chǎn)品。你會對居然有這么多開發(fā)者在試圖“修復”軟件前不知道軟件應該是怎么工作的感到驚訝。先看看文檔再說吧。

  組織你的思路

既然你的大量時間都是用在溝通、研究和多任務上,你需要一些工具來幫助一切井然有序。

  • TODO 清單/任務工具:你的公司應該已經(jīng)有了某種任務管理軟件了,但你自己也有類似的個人系統(tǒng)是有幫助的。使用便利貼或者像 Trello 或者 Todoist 之類的軟件。

  • 筆記:開會一定要記筆記,要致力于改進現(xiàn)有文檔并且建立個人的知識庫。使用 Evernote、OneNote 或者筆記本。使用這些工具似乎有用力過度之嫌,但日后在回顧這一耗掉了你 3 天時間才想清楚的晦澀的開發(fā)過程時你會感謝自己的。不做豐富筆記的好的軟件開發(fā)者我一個都沒見過。

  • 圖表/可視化:人是視覺動物,創(chuàng)建流程圖和架構可幫助你和其他人理解復雜的話題。在跟非技術人員溝通時圖解尤其有用??墒褂?Lucidchart、?Visio 或者白板。

  知道何時使用庫

簡短回答:隨時都要。

詳細回答:99% 的時間內(nèi)你都不應該重新發(fā)明輪子。在大多數(shù)的軟件工程崗位,實現(xiàn)特定類型的東西都屬于純粹浪費時間。這并不意味著你不應該知道所使用的算法和數(shù)據(jù)結構是怎么工作的,因為這可以幫助你決定用什么以及什么時候用。

為了成為一名高效的軟件工程師,你需要理解自己可以任意支配使用的那些庫。大多數(shù)流行語言的標準庫都是極其有用的,其規(guī)模比你想象的要大。此外,代碼庫也許也會利用了額外的特殊庫。閱讀其文檔,知道什么使用去使用它們。

你還應該不要害怕去建議額外的庫,如果它們將節(jié)省時間的話。然而,你需要確保自己選擇了一個好的庫供行業(yè)使用。好的庫的標準是:

  • 開源,這樣你就可以驗證自身代碼的質(zhì)量,并有可能修補對應用非常關鍵的 bug。

  • 按照 MIT 和 BSD 等方式進行的授權,這樣你的公司使用起來就不會遇到任何問題。要小心 GPL,因為它會讓你不小心就將整個代碼庫都開源出去。

  • 成熟,比方說出來已經(jīng)有一段時間了,并且功能集非常豐富。

  • 維護性強,新版本推出很密集。

  • 別的公司或者項目也使用,這個可以充當品質(zhì)認證確保有行業(yè)支持,能持續(xù)維護下去。

  持續(xù)改進

為了替自己創(chuàng)建新的職業(yè)機會,除了學習會讓你更擅長日常工作的技能以外,你還需要持續(xù)改進自身技能并且學習新技能。

其實學習的機會有很多,而且其中很多都是你可以負擔得起的:

  • 在線課程:向領域內(nèi)最好的教授學習的機會,而且方式靈活,不容錯過?,F(xiàn)有技能的補充性教程可以去可以看看?Coursera、?Udacity 以及 edX?等。

  • 在線碩士學位:在線碩士學位是最近在頂級大學流行起來的一個趨勢,這種方式可以靈活地繼續(xù)你的正規(guī)教育。相比之下,這種繼續(xù)教育方式費用沒那么昂貴,修完整個學位大多數(shù)在 1 萬美元左右。喬治亞理工大學、UT 以及加州大學圣地亞哥分校等大學均提供此類學位。我個人推薦喬治亞理工大學的在線碩士虛偽,我去年剛從這里畢業(yè)。

  • 博客:博客是開發(fā)者社區(qū)的重要組成部分。諸如 Coding Horror、Joel on Software 等博客或者甚至更加詼諧的網(wǎng)站如 The Daily WTF 等都可以為你提供信息,了解到作為軟件工程師該干什么不該干什么。瀏覽 Medium、r/programming, HackerNews 等新聞流也能讓你找到好博客和好文章。

  • 會議:最后但并非最不重要的一個,會議時令人贊嘆的學習機會,你絕對應該利用公司的培訓預算去參加會議。以下是不完全的好會議清單:GOTO(通用),?Strange Loop(通用),?PyCon?(Pytho),CPPCon?(C++),DEF CON?(安全),F(xiàn)luent?(Web 開發(fā))。上述所有的會議在 YouTube 上都有視頻,所以你哪怕不出席也能學到東西!


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉