程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> leetcode:程序員面試技巧

leetcode:程序員面試技巧

編輯:C++入門知識

leetcode:程序員面試技巧


起因

寫在開頭,腦袋鐵定秀逗了,歷時20多天,刷完了leetcode上面151道題目(當然很多是google的),感覺自己對算法和數據結構算是入門了,但仍然還有很多不清楚的地方,於是有了對於每道題目寫分析的沖動。不過在看到leetcode上面的文章之後,決定先從翻譯入手,順帶再寫寫自己做題的心得體會。今天是第一篇:程序員面試技巧。

如果你主修計算機科學,那麼在你工作的時候會碰到很多有難度的編程問題。當你去找工作的時候,你會有很多的面試,而面試官通常很喜歡問你很多技術性的問題,以下就是三類主要的題型:

  • 算法/數據結構
  • 特定編程語言/通用的計算機知識
  • 腦筋急轉彎

    後續我將詳細的討論上面這幾點:

    算法/數據結構

    你必須深刻的理解以下幾種數據結構:數組,鏈表,二叉樹,哈希表等。你必須明確地知道什麼時候該使用數組或者鏈表,譬如在實現一個列表翻轉的時候。

    面試官通常會問你一些算法問題用以檢驗你的編程解決問題能力,一些算法問題如下:

    • 在一個句子裡面反轉單詞。
    • 在一個單詞裡面反轉字母。(嘗試使用迭代或者遞歸解決)
    • 如何在一個列表裡面找到重復的數字。
    • 生成數字n的全排列。(小提示:遞歸)
    • 找到兩個排好序數組的中間值。(小提示:分治法)
    • 如何進行拼寫檢查並驗證單詞。(小提示:編輯距離)

      (譯者吐槽,說句實話,上面幾個問題如果沒做題大部分我還真答不出來。)

      特定編程語言/通用的計算機知識

      如果你應聘的是C++職位,需要准備好應對很多C++的問題,其它編程語言也一樣。如果你應聘的職位不需要特定的編程語言,那麼你可能會被問到通用的計算機知識,譬如在堆和棧上面創建對象的區別。

      我經常碰到的一些C++問題如下:

      • 什麼是虛函數?怎麼實現的?使用虛函數會有啥性能問題?
      • 什麼是虛析構函數?為什麼需要他們?如果你不實現成虛析構會出現什麼問題?
      • 什麼是拷貝構造函數?它什麼時候被調用?
      • malloc和new的區別是什麼?

        (譯者吐槽,上面這些感覺還算靠譜,至少沒問虛擬繼承是啥!我面試的時候通常還會問很多STL的東西,畢竟這在C++裡面已經是很基礎的了。Template這些的就算了,有時候都能把自己繞暈,還是別坑面試者了。)

        腦筋急轉彎

        一些面試官很喜歡用一個腦筋急轉彎來結束面試。這個其實很坑爹的,不過還是老老實實的准備一些吧。

        一些經典的問題:

        • 兩個雞蛋問題:

          你有兩個相同的雞蛋,然後還有100層樓等你去爬。你需要知道最高到哪一層扔下雞蛋,雞蛋不會摔碎。(雞蛋語錄:為啥受傷的總是蛋蛋?)。很有可能第一層就碎了,也可能到了100層才碎。你需要知道最多嘗試幾次就能找到答案。

        • 盡可能快的在一個byte裡面反轉bit。

        • 你有5個相同的罐子,都裝著球,其中有4個裡面每個球都是重10g,另一個灌每個球重9g,你有一台電子稱,只稱一次,找到那個重9g球的罐子。

          (譯者吐槽,上面這些腦筋急轉彎問題感覺就是算法問題,哪裡是腦筋急轉彎,明顯的忽悠!)

          總結

          當然這是譯者自己的,原文在上面就結束了,可以看到,作為一個程序員,我們其實是幸運的,因為我們能夠接觸如此多的挑戰,並不斷提升自己。可我們同時也是郁悶的,很多時候往往都有這樣的錯覺,數據結構和算法在很多工作中並不用到,但是為啥偏偏就面這個,linus貌似說過:“Bad programmers worry about the code. Good programmers worry about data structures and their relationships”,而在《大教堂與集市》這本書裡面,作者直接說明“Smart data structures and dumb code works a lot better than the other way around”。有時候當寫程序寫多了,自然就發現算法和數據結構的重要性了。

          另外,現在無論哪個公司,除非你是大牛級別的,面試幾乎不會脫離上面那些東西,所以還是老老實實的學習吧,騷年。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved