當前位置:文思屋>社會工作>如何面試>

如何面試 PHP 工程師?

文思屋 人氣:2.99W

個人認為這篇文章很有參考價值,如果你是一名 php leader,你可以從中看到如何面試別人;如果你僅僅時一名工程師,你也可以從中看到哪些點自己還模糊,查漏補缺。

如何面試 PHP 工程師?

正文:

問一些日常的正常的PHP問題,主要是考察應聘者的認知:

一個包含中英文的字串如何獲得它的自然長度(看看ta是否有encoding的知識和意識)

問一問什麼是ORM,有時候會問這個詞的英文全稱是什麼,問問ta對於ORM有什麼個人的看法?(看看ta學習細不細,有沒有技術判斷,PHP開發人員應該知道什麼時候使用ORM)

問一問假如ta要自己去實現一個framework,ta會怎麼設計。(看看ta對程式碼架構的理解,對MVC的理解)

問一問framework設計裡的url dispatcher他會怎麼考慮。(HTTP知識)

問一問ta對框架本身的看法

瞭解一下ta對Design Pattern的認知,比如Singleton,Observer,Factory等常用的設計模式,問一問ta對設計模式本身的看法。

問兩三個資料庫設計的問題

問幾個前端的問題,哪怕ta的職位是PHP開發人員,好的PHP人員不可能不瞭解前端,而且很可能很瞭解前端

問一問ta對noSQL的瞭解情況(對與noSQL的認識是和傳統Relational DB的認知是分不開的)

問一問ta碰到問題時候會如何去尋找答案

問一問ta習慣使用哪一個搜尋引擎(如果是http://GOOGLE.COM就有加分)

問一問ta最近看的書

問一問ta的職業規劃,喜歡做什麼,對工作環境有什麼要求

別出生僻的題,別為難人家,更不要變相的侮辱人家,正常交流為主,你要的是一個正常的人,優秀不優秀就看你的眼光和運氣了。

很多公司的技術人員招聘會刻意追求刺激的問題,比如很著名的微軟的“下水道的蓋子為什麼是圓的”,不是說這些考察毫無道理,但更多的是一種“marketing”的手段。

PHP 工程師面試的`四個環節

一,自我介紹

任何一個面試的開始,我都會先對公司、所面試的職位以及我自己進行自我介紹,這一點我覺得很重要,而且這個也是很多面試都忽略的一點,別人來面試,可能對你的公司完全不瞭解,如果你不是知名的網際網路公司的話,這一點很正常,對於職位的資訊,面試者可能知道的就更少,如果面試了一場,別人都不知道自己處於公司架構中的一個什麼位置,我很懷疑這種公司是否招人,面試官也是否真誠。最後應聘者對面試官的資訊的瞭解估計就更少了,可以說是一無所知,而面試官已經從簡歷上知道了應聘者的大部分資訊了,所以這個自我介紹就顯得很有必要,而且必須是在面試開始的時候傳遞給應聘者。

二,應聘者的自我介紹

因為簡歷中已經有應聘者的基本資訊,所以這個介紹並不是為了得到更多的應聘者的基本資訊,只是從第一個環節轉換到第二個環節——開始對應聘者的提問。自我資訊介紹完了以後,我會開始讓應聘者介紹他的工作經歷、離職原因和各個公司大概的專案經歷,這個環節就基本上可以考察出這個人的能力處於一個什麼位置了。一般優秀的人在介紹他的專案經歷都會顯得比較自信,這個很關鍵,這就是所謂的成就。優秀的面試官這個時候就應該給對方以肯定,然後再在後面的環節中重點考察,不過有些遺憾的是大多數面試官的第一反應是懷疑,而且特別喜歡找出別人的破綻,然後發表自以為是的高見。如果對方所描敘的每個工作的經歷都差不多,也沒有什麼值得大書特書的專案經歷;如果這個人工作了比較長的時間了,那可以說明這個人並不是一個很有進取心,能力也一般的人,當然這並不是說就可以把別人pass掉了,最後是否招聘,需要考慮的還有這個職位需要什麼樣的人,以及這個職位能夠提供多少薪水,別指望花少的錢招好的人,即使這樣招過來了,別人也幹不久的;如果應聘者工作的時間並不長,那麼就可以考察一下對方是否有潛力了,我個人覺得招聘到一個有潛力的人是最成功的面試,因為這種人的薪水不會很高,而且有潛力意味著肯學習、積極,這會給整個團隊帶來很多正能量,並且如果他可以跟公司一起成長,那麼假以時日,對公司而言就會是一筆相當可觀的財富,對於對方而言也是一樣,這是一種雙贏。

三、能力考察

這個環節是最關健的。通過第二個環節瞭解了應聘者大概處於一個什麼位置,那麼這一步就是要考察對方是否真正的具有我們所認為和所需要的技術能力、潛力,除此以為還要考察溝通能力和團隊協作能力。所有這些能力都可以歸結為一點,那就是解決問題的能力,因為程式設計師的日常工作就是不斷的解決一個又一個的問題,那怎麼考察呢?我一般會以下面幾種方式來考察:

1 、選取應聘者自認為所做的專案中最有價值、最有挑戰性或者最有難度的部分,我首先會了解他是怎麼解決這些問題的,然後在他的回答中進行互動,提出各種各樣的問題和假設,考察對方如何應對。

2 、跟對方探討他所最熟悉的技術,框架啊或者資料庫之類的東西,或者是一些他在簡歷提到的或者是在第二個環節中提到的,注意這裡主要的目的是探討,因為有些技術我自己也未必熟悉,不過如果應聘者可以把某個他熟悉而你不熟悉的技術的特點講清楚,這就相當不錯了。

3 、我提出一個問題來探討如何實現,然後在實現的過程中不斷提出新的問題。

一般在一次面試過程中這幾種方式都會用到,而且三個過程都會伴隨著在紙上或者白板上畫一些解題思路以及架構圖,當然最重要的是,這裡必然會有一個部分要求應聘者寫程式碼。

對於上面的幾種方式的結果,如果對方能夠很好的理解我所提出的問題,以及對於各種問題都會有自己的見解和解決方案,並且對於某些問題還可以提出比較獨到的見解,特別是可以對我所提出的問題進行批判,指出其中的不合理之處,那麼很顯然這會是一個很優秀的程式設計師,當然這並不是說招聘就應該招這種人,這需要面試官來判斷,結合職位的要求和薪資水平來決定吧。

四、提問

一般面試的最後都會有這麼一個環節,這個環節意義不大,不過我個人還是更喜歡應聘者會提出一些關於職位、團隊和將來可能的工作相關的問題,不是很喜歡關於薪資、是否加班、以及福利的問題,這些都是跟人事相關的,至於加班,呵呵,做技術都會有一點,那些加班很多的公司估計也不會說得很明確吧。

最後說下我個人在面試中不是很關注的東西:

1 、學歷,我之前面試過一個還不錯的人,但後來這個人學歷造假,入職沒有通過,人事告訴我的時候,我告訴她我都沒有注意到他的學歷。不過這不是說學歷不重要,只是我覺得學歷不應該成為關注點,特別是對於應聘者,自己搞不定,就別怪學歷。

2 、工作經歷。這不是說工作經歷好和工作經歷壞都一樣,很顯然工作經歷好的會加分,但這並不意味著工作經歷壞就會減分,我們處於一個什麼樣的環境大家心裡都清楚,一個人學歷不好一畢業就很難進入那種知名的公司,去不知名的公司,碰到垃圾公司的概率很高,工資低、加班多、福利差,所以跳槽多一點,完全可以理解。

3 、死記硬背的東西。例如前面幾個人的回答所說的那些問題,這些問題只有在我實在找不出什麼問題問,而且所問的問題都得不到滿意的回答,而且說不了1-2句就斷了的情況下才會問,不過這種情況出現了也基本上意味著面試就結束了。

好了,就寫這麼多了,面試是一個動態的過程,而且要在1-2個小時的時間內就考察出一個人的能力這基本上是不可能的,所以很多時候是否能夠招聘到合適的人面試官的面試能力才是最重要的,特別是在公司時間和成本有限的情況下,面試官的一次面試就要做出是否招聘的決定的時候,面試官的面試能力就顯得更重要。不過我個人還是覺得面試應該制定一個制度性的流程,通過幾輪不同的人的面試來決定。關於這個我推薦大家一本書,名字叫做《打造Facebook》,這是一個facebook的華裔技術人員寫的,裡面說到的facebook對工程師的面試方式還是很有借鑑意義的。