JavaRush /Java Blog /Random-TW /未來 Java 開發人員的指南。面試和職業生涯
Fry
等級 41
Львов

未來 Java 開發人員的指南。面試和職業生涯

在 Random-TW 群組發布
未來 Java 開發人員的指南。 面試和職業 - 1 原力是一條可供許多人飲用的河流,而絕地訓練並不是汲取它的唯一途徑。” — 路克天行者 所有的書籍選擇都被留下來了。由您決定閱讀哪些內容和不閱讀哪些內容。現在你只剩下一個目標:找到一份工作並建立自己的職業生涯,而不踩耙子。 上一篇文章分為幾個部分: - 工作前 - 面試 - 工作中 這一部分包含了很多我個人的觀點,所以請不要斷章取義,把它當作是與老朋友的坦誠對話:)。

上班前

以下是十種最受歡迎的陳腔濫調,當靈魂被程式設計所吸引,但某些情況幹擾了人時,就會出現這些陳腔濫調。我的任務是努力消除你的疑慮,讓你建立正面的思考方式。如果您正在閱讀這篇文章,那麼您比您想像的更進一步!在精神上,你已經到達了你需要到達的地方,如果你已經讀過一些書,那麼你已經成功了一半。因此,不要再懷疑了──這就是弱者的命運。唯有前進!已經好多了?那我們走吧! 「我沒有受過教育」 當我完全沒有受過教育,進入一家大型外包公司的學院時,面試官溫和地向我暗示,他們對文憑根本不感興趣,所以問題很具體——關於OOP和基礎知識爪哇。當然,您會遇到技術可用的職缺。教育將是一個明確的要求。我只是想說,他的缺席這些日子並不是一個障礙。許多外國辦事處要求電腦科學學士/碩士學位,或註意相關經驗。沒有說服力?你可能會因為我沒有接受過技術教育而感到鼓舞;),但這絕對沒有阻止我在大公司獲得經驗。現在問我,如果我可以倒帶電影,我會怎麼做?當然,我會去KPI/NAU,但如果沒考上我也不會太難過。別再擔心了。時間會過去——如果你願意的話,你可以在 40 歲時獲得學位——但現在,專注於成為初級開發人員。 「總是會有人比我聰明」 總會有人比你更聰明、更聰明、更靈活、更有才華,任何工作也不例外。這一事實絕對不會賦予您偏離目標的權利。也許,在地球另一端的某個地方,有一個來自日本的小男孩比你更快地計算乘法和除法,而一些來自捷克共和國的祖母在手機鍵盤上打字比任何青少年都快。但你不考慮這個,對嗎?那麼,一旦你被錄用了,為什麼還要關心和你一起工作的人呢?在某些方面,你未來的同事會比你優越,而在其他方面,他們會不如你。這可以!我們把它劃掉。 「我不認為我可以」 首先,沒有人說這很容易,但這並不意味著你的目標是不可能的。即使您目前擔任會計師或銷售顧問,也沒有什麼可以阻止您簡單地嘗試。下班後過來坐下來學習。如果你隨著時間的推移看到一些進展,這表示你正在朝著正確的方向前進。不要停!如果你對這個哪怕有一點點興趣,並且把它給了你,那麼我不知道有哪一點可以讓我相信你不值得。 “我被懶惰壓垮了” 懶惰只是缺乏動力。如果您發現您的大部分空閒時間都在愚蠢地做垃圾,而不是學習和保持正軌,那麼我要趕緊通知您,很可能,成為程式設計師不適合您。至少不是現在。有些人把懶惰稱為罪惡、疾病、現代霍亂和肥胖。把這件事留給職業歇斯底里的人吧。在我看來,生活中的一切都充滿了鬥爭和競爭的幻覺:誰更高,誰更強,誰更富有。誰擁有更酷的車,誰在團隊中的薪水更高,誰在健身房臥推更重,哪個女孩結婚早生孩子——這會讓你生病,就像臭快餐一樣。人們不再生活和享受生活,不再追隨自己的夢想,放棄舒適區,在百事可樂和可口可樂之間做出選擇。對我來說,懶惰是好事,這真是太美好了。這是身體的一種普通保護功能,可以節省精力和時間來處理對身體無用的事情。人生來就是自由的,所以如果你很懶,就別再試圖把你的屁股從沙發上抬起來了——也許它現在已經就位了:)。 「我去那裡是因為錢」 如果你聚集開發人員並說:從現在開始,任何級別的工資都將是3-4k 格里夫納,而測試人員將繼續獲得相同的工資,那麼問題就會有所不同:不是有多少這是一個炸彈,而是有多少程式設計師在這個消息之後仍然是程式設計師。很多人進入IT產業都是為了錢。薪水由美元、起司和昂貴的數位單眼相機換算而來。無論我與人們共事多少次,總是會有人談論這個問題。我並不是說這不好,我只是希望你不要試圖說服自己,你來這裡純粹是為了精神上的目的,讓世界變得更美好。在我大三入職之前,我就知道前輩、技術主管、甚至中階管理人員的薪水是多少,這些想法只給了我啟發:在我當程式設計師之前,這樣的數字只能是我的夢想。用正確的名稱稱呼這些東西,不要為此感到羞恥。 「在我看來,這不是我的。」 那又是誰的呢?你知道,檢查很容易。打開 Hortsmann 的第一卷,開始閱讀和編寫範例程式碼。如果你不感到無聊,而且你沒有在第二週的同一章上原地踏步,那麼就拋開你的疑慮吧。學習技術專業是循序漸進的事情。如果你不知道 A,你就無法繼續學習 B,但你總是有機會回顧上一章並鞏固你的基礎。大膽試試吧。 “像我這樣的人還有很多” 總是存在著爭奪席位的競爭。我不爭辯,例如,現在有 300-400 名沒有經驗的測試人員,甚至每個地方更多。是的,這是殘酷的事實,但另一方面,即使有這樣的指標,我也找不到足夠嚴肅的觀點。是的,每個地方至少100500!!您總是有機會獲得專案經驗:建立某種服務、桌面程式、使用您知道的整個堆疊 - 並且您已經取得了進展,而除了發送履歷之外,其餘的都可以做沒有其他的。 「沒有人回覆我的履歷」 繼續上面的觀點。最有可能的是,對於未來沒有經驗的IT專家來說,能夠寫出一份漂亮的簡歷是件好事,但是當一個空缺職位有很多人時,許多簡歷彼此非常相似:你當然可以發送一張照片有乳溝(如果是女孩)或寫了很多技術,這些技術你自己只能從維基百科上知道。在這兩種情況下,HR 根本不會在乎:如果專案職缺必須包含例如了解 AWS 的人,那麼他們就會在履歷中尋找 AWS。考慮另一個重要點,例如同事的建議。這是任何沒有這樣的熟人的人的痛苦,因為大部分的後輩都是從那裡被帶走的(如果這個人是推薦的——當然不是白痴)。我強調,通常情況下,對於初級職位,他們會僱用一個足夠活躍、願意學習、甚至願意吃飯的人。如果這樣的候選人失敗了,那麼你很可能就是下一個。好吧,當其他人都在接受面試時,您有很多可以提高技能的領域:開源、網路上的任務,也許還有自由職業。 「我不會通過面試/我想加入一家特定的公司」 是的,第一次面試很可能會失敗,但你將獲得的經驗是無價的。在隨後的每次面試中,您都會變得更加自信和足智多謀。我還記得我的第一次…天哪,我在說什麼廢話?!聽完就離開真是太可惜了(我記得那個對著我笑的食屍鬼),但當我回到家仔細想一想,我意識到這是一個很棒的教訓。在他之後,所有類似的活動都充滿了輕鬆和自信。沒有人死,他們正在尋找像我這樣的人,這意味著我會出現。相信你自己!如果你特別想加入某家公司,那麼我想我不會告訴你在我們環境中流行的生活竅門,但仍然是:在你組織與這家公司的會議之前,先與競爭對手進行面試。也許你會得到一些你無法拒絕的東西,或者條件會更苛刻。我確信一件事:你不會後悔的。 “我對這份工作也感覺很好” 你知道,有句老話:Le mieux est I'enneini du bien(「最好的就是好的敵人」)。也許你的工作不是最糟糕的地方,但是,是的,老闆是個混蛋,那又怎樣?或者,比如說,第三年沒有獎金,但有穩定的工資,尤其是我已經30多歲了。在某種程度上,這可能是真的,只要記住你的生命只有一次,不應該浪費在失望,為了想像中的安慰,當周圍有那麼多有趣的事情,而你的一生都不足以理解時。不要害怕變得更好,不要害怕成為最好的。不要聽任何人的意見,如果你知道這就是你真正想做的事情,就堅持不懈地朝著你的目標前進。不要害怕改變!

面試

總的來說,你可以在互聯網上找到所有這些,或者詢問你的朋友,但我認為這不會是多餘的。以下是一個初級 Java 開發人員面試的例子,如果我是面試官,現在的面試情況就是這樣。問題可以是任何問題,我只是試著收集一些關於醫院的一般資訊。讓我們想像一下您很幸運。 標準方案 步驟 1.招募人員打電話給您,您安排與她的面試,例如明天 11:00。 步驟 2.您提前到達,因為 11:00 很可能不是您的時間,而是開發商的時間,他們已經預留了某種房間,他們會在其中折磨您。對於任何招聘人員來說,對此提出警告都是一個很好的做法。 步驟3。事實上,從第3步開始,所有的點都可以混合起來,因為面試的過程可能會有所不同。例如,在這裡你可能會被問到一些基本的事情,你來自哪裡,為什麼在這裡等等。有可能HR自己可以做這個,當然也有可能是用英文。確實,這取決於公司。 步驟 4.您被邀請到一個會議室,在那裡您將與一、兩個、三個人進行對話,其中一個將是未來與您合作的高級人員或技術主管,其餘的人都在那裡可能是Scrum Master、其他開發人員或HR。他們會採訪你一段時間,然後與你握手並讓你離開。 步驟 5.也許這將是第二天,或者也許是在第 4 步之後立即進行 - 您將與外國客戶(如果有的話)進行對話,或者他可能會親自進行採訪。正如您所看到的,有很多選擇。哪裡有客戶,哪裡就有電話訪問。這只是一個例子。 初級 Java 開發人員的技術面試範例 我對那些讀了一些聰明的東西以在面試時在應徵者面前淹沒/碾壓/炫耀的低級開發人員感到非常遺憾。如果你看到這樣的人在你面前,感到壓力和緊張,立即派他去參加三個有趣的活動,因為成功完成後你將不得不和這個白痴一起工作。不要浪費你寶貴的神經。首先,面試的目的應該是找出候選人知道什麼,而不是不知道什麼。當然,如果你需要一個懂特定東西的人,就問他,不要用你在專案中用不到的無用的東西來打擾他。畢竟是人啊!以下是面試中可能出現的大概問題。每項技術 5 個問題。 物件導向程式設計 1. 舉出一個現實生活中多態性的例子?有什麼優點?缺陷?寫一些簡單的程式碼。2.什麼是介面?抽象類別?如果我們可以愚蠢地將所有內容都寫在類別中(有點挑釁),為什麼我們還需要介面?抽象類別也是如此。Java 8 中的預設方法是什麼?3. 使用假想的資料庫或程式的特定範例(資料庫中有不同類別的工人的清單)以及它們之間的互動(聚合、組合)來建立類別層次結構。4. 組合與聚合(is-a、has-a)有何不同?5. 如何繞過Java中多重繼承的禁令? JDK/JRE 1. JDK 與 JRE 有何不同?什麼是 JVM?2.什麼是類路徑以及它的用途是什麼?例如,如何將其他類別載入到類別路徑中?3.你對類別載入器了解多少?4. 給我們介紹一下javadoc?它是做什麼用的?5. 什麼是JAR、WAR? Java常見 1.靜態方法和非靜態方法有什麼差別?什麼是最終的?2.什麼是裝箱-拆箱?byte b = 127, b++,結果是什麼?為什麼?3.什麼是包裝紙,它們的用途又是什麼?4. 我需要做什麼來建立我的註解?什麼是覆蓋/重載?5.為什麼String類別是final的?intern() 方法有什麼作用? 資料結構 1.解釋Java中Collections API的結構?您已經使用過 Stream API 嗎?2.ArrayList和LinkedList有什麼差別?哪裡用ArrayList比較好,哪裡用LinkedList?3. 告訴我們HashMap是如何運作的?使用 TreeSet、HashSet 有哪些特點?您有番石榴收藏的經驗嗎?4. Java 中的數組,二維數組的範例。5. hashCode,以HashMap為例等於嗎? 並發 1.什麼是進程?流動?如何創建線程?什麼是同步的?如何理解這段或那段線程安全程式碼?2.什麼是Thread.sleep,還有wait、notify、yield?3.舉一個死鎖的例子?4. 使用多執行緒時的集合。5. ThreadLocal 和 Atomic SQL/JDBC 操作 1. 使用一個具體範例,從 Users 資料庫取得薪資大於 5000 的使用者。2. 範例 INNER JOIN、OUTER JOIN、Order By、Group By。3. 為什麼需要 JDBC 驅動程式?例子。4. 告訴我們您對 ResultSet 的了解,舉幾個例子。5.使用RS編寫一個簡單的DAO。 JPA/Hibernate 1. JPA 的缺點和優點是什麼?2.什麼是EntityManager?實體?3. JPA/Hibernate 中的標準。4. JPA/Hibernate 中的一對一、多對多 5. 如何在 Hibernate 中進行 JOIN?HQL? 春季 1. 什麼是 DI/IoC?優點。2.什麼是應用程式上下文?豆角,扁豆?3. IoC初始化有哪些型別?4. 單例,Spring 原型?基於註解的Spring?5. 豆子的生命週期?初始化方法、銷毀方法?@PostConstruct,@PostDeploy? 梅文 1.maven的主要階段,生命週期。2.如何運行maven帶測試,不含測試?什麼是原型、mvn 依賴?3.maven中的設定文件,如何創建,如何啟動。4.maven中的快照是什麼?中央/遠端存儲庫?5. mvn 中的插件,它們如何運作,幾個例子。 演算法 1. 演算法的概念、速度、Big-O-Notation。2、如何一次找到LinkedList中的中間元素?3. 寫出一個原始的Stack?堆疊和佇列有什麼區別?後進先出、先進先出?4.快速排序、歸併排序。5. 寫一個程式來檢查一個數字是否為回文數。我同意,也許槓鈴比初級的更向中間彎曲一點,但我認為這樣的準備絕對不會傷害你。嘗試更深入地研究每個問題。順便說一句,Java中的許多領域這裡沒有指出,請考慮一下。

工作期間

這裡給那些已經安定下來的初級/中級開發者一些小建議。這些簡單的提示可能會幫助您,就像它們幫助我一樣。 不要固執 不要 試圖證明你的觀點,即使它非常接近事實。你已經注意到,你們已經爭論了很長時間,這意味著路障的另一邊有一隻普通的驢子,他的生活只有兩種觀點:他的觀點和錯誤的觀點。我們有數量驚人的固執的人,他們堅持到最後,只是為了讓他們的自我不被動搖。這些不僅是你的同事,他們無所不在——小巴上、商店裡、親戚、親密的朋友——你無法逃避或隱藏他們。你需要以某種方式與他們互動,即使你知道這個人在公開胡說八道。而且,同樣的事情也可能發生在你身上。我同意,即使是一個頑固的人也可以解釋簡單的事情,但是如果我們談論專案中的架構問題或個人觀點怎麼辦?忘掉這些垃圾吧——保持靈活性。我非常尊重那些能夠在所有人面前承認自己犯了錯的人。這正是對你作為初級專家有用的品質 - 很難與一個開放的人對抗,特別是當他承認他正在學習並且有權犯錯時。 不要遲到 無論是試用期還是星期五,每個人都忘記了,11點就來了,這並不重要。還有一點很重要:準時是專業人士的一個特徵,他會突然為自己贏得額外的分數。而且加分不會傷害一個沒有經驗的人,對吧?盡量不遲到,誠實工作8小時後下班。 不要濫用估計 不幸的是,這是我過去曾經遇到過的一種非常常見的情況。開發者為自己設定了8-16小時完成任務,沒想到只花了3-4小時就完成了。他把剩下的時間花在自己的私人時間上,就像我一樣,或看 YouTube 和其他娛樂節目。從法律的角度來看,似乎我們已經同意了,但從人性的角度來看,你正在剝奪自己非常重要的事情: 1.你原地踏步,因為你用不必要的事情來填補你多餘的時間;2. 你沒有發展,因為你沒有向你的管理階層通報你的快速進步;沒有人知道你比預期更快完成任務;3.你開始不斷高估價值觀的平均時間,這只是一條沒有出路的路。花時間研究落後於火車頭的可能性非常高,因此請記住,技術和新版本正在快速發展。訂閱當今的 Java 佈道者,閱讀 Java 摘要,了解一般感興趣的新事物。這將幫助您維護品牌並發展。 幫助別人 不要害怕幫助別人,即使他們和你一樣不懂事。首先,你會大大增強你的知識,其次,你會在別人眼中獲得尊重,同時他們也會幫助你。在這樣的環境中,誕生了最優秀的團隊,以及非常快速的技術和個人成長。 做運動。有一個嗜好 不,說真的。運動的人不僅看起來更好、感覺更好,而且他們的大腦功能也更好!脊椎側彎、下背部、體重過重、各種內臟器官問題——全天候坐在電腦前,甚至在工作之外,都會導致這種情況。如果你不能參加運動(我對此表示懷疑),可以使用生活小撇步:時不時站著工作,提前兩站下車,然後步行去上班。一般來說,多走路。如果每週花在程式上的時間超過 40 小時,那麼還有倦怠的風險。個人嗜好會起到幫助作用-例如攝影、音樂等。定期騰出時間進行靈修。 平衡你的個人生活 當你的女朋友/妻子說:「筆記型電腦還是我」時,你需要仔細考慮程式設計在你的生活中佔據什麼位置。另一方面,當你開始 IT 之旅時,你需要向你的另一半清楚地解釋,現在你需要學習很多東西才能取得更多成就。我希望他們理解。好吧,試著正確平衡和分配你的時間。 超越 積極主動,例如,如果您覺得自己可以分享知識或有有趣的主題,為什麼不在公司內為其他人組織小型課程呢?如果您知道如何提供幫助,請不要害怕參與大型開源專案。如果您想編寫遊戲、社交專案或其他想法 - 去做,去做,去做!不要固步自封,不斷尋找發展的途徑。 保持競爭力 關注新趨勢,並隨時了解 Java 社群中發生的趨勢。例如,如果您偶爾、時不時地在 DOU 上監視 Java 職位空缺,這不會有什麼壞處,但不是為了擺脫工作,而是為了了解哪些技術仍然相關,哪些技術正在慢慢從市場上消失。也嘗試參加Coursera、Udacity等的課程,探索新的視野。甚至英語:嘗試觀看您最喜歡的帶有字幕的電影/連續劇,以提高您的會話技巧,下載一些有趣的應用程式來學習語言(例如 LinguaLeo),最後,參加課程。

結論

好了,我在 DOU 上的小專案即將結束。親愛的朋友們,我真誠地祝福您找到工作,並希望我在這 7 篇文章中描述的所有內容對您,甚至對於那些已經從事 Java 開發人員的人來說都是有價值的指南。未來的後輩們,請記住,沒有什麼是不可能的,如果你真正逼迫自己,你一定會成功。我希望你最終決定是否適合你,制定詳細的訓練計劃並冷靜地執行。如果你得到的回報是沉默,不要沮喪——這都是暫時的,最重要的是要相信,在任何情況下都不要偏離路線,而是要學習、學習、再學習。我非常感謝 DOU 團隊編輯了大量材料並在周一給了我黃金時間。DOU 是一個很酷的社區,它不再只是烏克蘭 IT 專家的網站。我還要感謝所有斜視我的文章、斷章取義的評論者。沒有你,這些文章就不會那麼有趣:)願原力與你同在! 原文摘自DOU
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION