【程式設計師面試系列】手把手教你如何面試,你要的我都有(技術篇)

程式設計師小躍發表於2020-01-03

作者:Dimple

solgan: 當你的才華還無法撐起你的野心時候,那應該靜下心來好好學習

前面一篇文章講的是面試前簡歷的準備。從自我介紹個人資訊個人技能工作經歷和教育經歷,四個大的緯度來詳細表明做好一份簡歷的重要性。

今天我們繼續面試前的準備,關於:技術知識準備演算法題準備

技術知識準備

相信大家經常會聽到一些經驗十足的大佬們會這麼建議,簡歷上對技能的掌握程度需要根據自己的實際情況描述,不能一股腦的寫精通。

小編之前和師傅面試別人的時候,也會特別注重這個字眼,瞭解就是了解、熟悉就是熟悉、精通就是精通。你寫的是哪個程度,就針對相應程度問你不同問題。

所以,這部分需要特別注意,千萬不能弄虛作假,千萬別打自己的臉呀。你要對自己負責,列出來的技術,你一定要把最基本的細節給掌握了。面試官一般會根據你寫的等級,逐步加大問題的深度和難度,判斷你到底處在哪個層次。所以,還得系統地、努力地學習,才能從容應對。

這裡簡單的寫幾點

  • 你寫的技術棧是Java,那麼你對Java的基本語法肯定要了解,併發程式設計、I/O、NIO、JVM根據不同的程度,瞭解不同的深度。還有現在常用的Spring、SpringBoot、Netty這些框架
  • 你寫了NoSQL中的Redis,那麼你需要掌握Redis的資料結構、效能優化、分散式、叢集等。耗子叔建議是至少要把官網上的那幾篇文章讀一讀
  • 你說你瞭解物件導向,是針對物件導向程式設計。那麼問題來了,你對設計模式瞭解嗎?所以還得熟悉23鍾設計模式,以及S.O.L.I.D原則等
  • 你寫了SQL,那不僅僅需要知道簡單的CRUD,還得知道相應的特性,MySQL和Oracle各自的優缺點,等等

總之一句話,不管你在簡歷上寫什麼技術,那你肯定是對這些技術有了一定的瞭解甚至是熟悉(精通更好)。

其實這個和學校裡的考試是差不多的,考試也是偏理論的,你仔細回憶下你大學考試是怎麼過來的呢?你是怎麼挑燈夜戰的呢?還不是把老師敲黑板的重點都記住,關鍵點都學會,是吧。你不用搞定所有知識點,但也得至少懂個七八成,才對得起自己付出的努力。

演算法題準備

小夥伴們肯定也看過很多拿到某某公司Offer的攻略,比如《LeetCode刷了xx道題,拿到xx大廠Offer》、《如果你要進大廠,這些xx演算法必知必會》。很多號主都會拿自己的親身經歷來表明, 刷題是有多麼的重要。其實這是一個很現實的問題,尤其是針對一些校招,各種演算法題。

所以所以,演算法很重要、演算法很重要、演算法很重要。是你面試大中型企業必須努力學習和準備的。

耗子叔在專欄裡聊過,也強調過,LeetCode是一個不錯的地方。其實不只是耗子叔,很多大V都一再強調,就像前文強調GitHub的重要性一樣,老生常談。

如果你能完成其中50%的題,那你基本上可以面試大部分的企業了。悄悄告訴你,小編對演算法也不大懂,當初面試的時候,讓候選人寫冒泡,自己偷偷看手機學習來著呢。但是,我可是個反例,我就想告訴你,演算法沒那麼害怕,其實都是有套路的。

小編在平時一直和朋友們強調,演算法都是有規律可循的。當你做題做的多了,遇到類似的題,你就能知道該用什麼方法拿出最優解,時間空間複雜度是更佳。舉幾個簡單的例子(參考《左耳聽風專欄》):

  1. 讓你在一堆無序的資料中找top n演算法,那麼練習完幾題之後,就知道基本是使用最大堆或是最小堆的資料結構
  2. 如果是二叉樹問題,基本上來說,就是使用深度優先、廣度優先、或者回溯等遞迴的思路,百試不爽
  3. 動態規劃還是必備的,就比如買賣股票、揹包問題、改字元等等。。。(學習群每週有演算法挑戰
  4. 經典的資料結構必不可少,比如,二叉樹、LRU演算法、字串匹配、迴文等,這些實在是常見,你不學會都不好意思
  5. 還忘了一個經典,資料排序方面的問題,二分查詢、冒泡、快速排序等

小編也很後悔,當初沒有更認真的去學習資料結構和演算法,這門課是大學裡少有的通用課程,和語言無關,主要都是針對思想,幾乎每個學校都會涉及,甚至都是必修課。所以,一定一定要重視起來。

打個小廣告:知道很多朋友平時沒有約束,也不知道如何選題,可以加入小編的學習群,每週一篇翻譯 + 演算法學習。一個人走的快,一群人走的遠,歡迎加入社群,同更多的人一起奔跑

如果做好技術知識和演算法題的準備,你get到了嗎?

下篇文章中,介紹面試前的準備中最後一項,工作專案準備,比如如何對工作中的專案進行總結。敬請期待~

奔跑吧,攻城獅們!

本文由部落格一文多發平臺 OpenWrite 釋出!

相關文章