來菲律賓后,公司換了五六家,收到的offer至少三十份是有的。面試公司三十多家,至今還沒有過沒收到offer的情況,自己也擔任過面試官,面試了不少新人。我個人面試的職位大都是中高級php以及技術主管的職位。所以,在上岸之際,我就把這邊php的招聘水準以及面試的需要準備內(nèi)容分享給后來者,掌握了我所說的這幾點,至少面?zhèn)€中級php是毫無懸念的。下面內(nèi)容主要針對中高級,初級的我就不說了,因為這邊對初級的phper并沒什么太高的要求,幾乎可以對數(shù)據(jù)庫curd、寫一寫 api 以及用過一兩個框架就沒什么問題了。
對于后端語言,其實語言的語法掌握是最基本的,也是最簡單的,所以面試官一般不會問你這個語法是什么意思,因為沒什么太大的意義。我先用一個五年開發(fā)經(jīng)驗的老程序員的眼光來分析下什么是后端開發(fā),既然有有后端開發(fā),那必然是有前端開發(fā)的。
什么是前端開發(fā),凡是進行客戶端的開發(fā)均可以理解為是前端開發(fā),比如瀏覽器、app就是最常用的客戶端,因此web開發(fā)、h5開發(fā)、app開發(fā),其實都可以大體理解為是前端開發(fā)。
什么是后端開發(fā),凡事基于服務器端的開發(fā),比如數(shù)據(jù)庫存取、I/O讀寫、請求與響應、進程、線程、緩存讀寫等等的操作行為,都可以看作是后端開發(fā)。再看的深一點的話,我們可以發(fā)現(xiàn),后端開發(fā)其實就是進行對服務器 cpu 以及 內(nèi)存 的操控行為。
什么是好的后端?在我看來只有一句話,在滿足業(yè)務需求以及保證代碼的拓展性和維護性的基礎上,使服務器的利用率達到最高,就是好的后端開發(fā)。
然后,我們分析,菲律賓的php面試需要準備那些重點。
根據(jù)我的經(jīng)驗,菲律賓的php面試主要有這幾點:
項目經(jīng)驗,以及對項目開發(fā)的理解(如何下手一個新項目)
php語言的掌握程度
數(shù)據(jù)庫相關知識
nginx相關使用
緩存方面知識(redis、memcached)
高并發(fā)處理經(jīng)驗以及手段
linux基本操作和理解
git基本操作和理解
框架的使用經(jīng)驗( 一般為主流框架,如 laravel 和 tp5 )
網(wǎng)絡安全相關問題
攻擊以及防護相關問題
其他一些雜七雜八的東西,比如 composer 、psr4標準等
上面幾點是大概率會被問到的問題,也幾乎只會問到這些范圍內(nèi)的問題,我簡單展開下每個問題,但是具體的進階,各位需要面試的話自己看。
1.他其實就像想知道你是否熟悉項目開發(fā)流程以及有獨立完成項目的能力,或者有足夠的開發(fā)經(jīng)驗。
項目開發(fā)流程:產(chǎn)品需求分析 -》產(chǎn)品原型分析 -》設計表結構 -》選擇開發(fā)框架 -》設計業(yè)務模塊 -》定義開發(fā)接口 -》 開始搬磚。
2.php的基礎掌握。我們知道php是腳本語言,那肯定會問一些腳本語言的問題,比如腳本語言和編譯語言的區(qū)別,什么是腳本語言,他的執(zhí)行方式,或者更牛逼一點會問PHP語言的執(zhí)行過程,其實就是想問你了解不了解 opcode。
雖然我們大多數(shù)phper,包括我,大部分時間都是在面向過程編程,因為框架把面向?qū)ο蟮氖虑槎甲隽耍敲嬖嚬龠€是會裝逼的問一下你,是否了解面向?qū)ο缶幊蹋o態(tài)方法、變量權限、抽象類、接口、繼承、克隆、魔術方法等)。
命名空間、正則匹配的一些基本知識也是會問一下的。
還有什么單引號雙引號區(qū)別,get和post請求、session原理;
3.沒什么好說的,該看的都要看(三番式、索引類型以及特點、查詢優(yōu)化、事務處理、主從同步、多庫聯(lián)合、鎖處理);
4.ngixn的話,只要會簡單的配置以及反向代理,一般就ok了;
5.redis 有哪幾種數(shù)據(jù)類型,分別是什么,還有高并發(fā)情況下的的雪崩問題如何解決(解決方案是 加鎖 )以及redis持久化原理(快照(RDB文件)和追加式文件(AOF文件));
6.事實上,我所在的幾家公司,高并發(fā)的場景都很少,我相信不部分公司其實并沒有太高的并發(fā)的情況,但是這卻是個必問的問題,可能覺得如果不問不夠?qū)I(yè)吧。
什么是高并發(fā)?它通常是指,通過設計保證系統(tǒng)能夠同時并行處理很多請求。
高并發(fā)相關指標有響應時間(Response Time),吞吐量(Throughput),每秒查詢率QPS(Query Per Second),并發(fā)用戶數(shù)等。
我們知道php是單線程的,現(xiàn)在由于php-fpm的加持,fpm幫我們維護了一個線程池,負責php線程的調(diào)度執(zhí)行,所以每一段程序執(zhí)行的效率,直接影響的高并發(fā)的指標。通常的效率瓶頸有這么幾種,復雜的算法、大的循環(huán)、數(shù)據(jù)庫慢查詢等。
現(xiàn)實情況中,比較多出問題是出在數(shù)據(jù)庫這邊,通常的解決方法是,主從同步,分布式部署以及對數(shù)據(jù)進行緩存。
如果流量太大,一臺服務器不夠用也要進行多臺服務器分布式部署。這里涉及負載均衡的配置,以及nginx幾種負載均衡的算法。
7.不說什么了,天天用就會了(ls、top、ps、du、df 。。。。)。
8.git的基本使用方法,沒什么說的。
9.現(xiàn)在的主流框架越來越像,tp5的涉及理念明顯是借鑒了laravel啊,什么依賴注入、容器、合約、服務提供者、門面、中間件、restful api 等等,了解一下,用一用就好了。
10. https(http+ssl)、非對稱加密(密文、私鑰、公鑰)、加密算法,這些在開發(fā)支付時需要用的到。
11.cc攻擊(ddos的一種)、ddos攻擊,防護方法 :
cc:服務器垂直擴展和水平擴容、 數(shù)據(jù)緩存、 頁面靜態(tài)化、 用戶級別的調(diào)用頻率限制、 IP限制
ddos: 砸錢!(買防護、買帶寬)
12.想什么composer 、 psr4在框架部分因該會問到,主要是想問php如何引入第三的程序包(這也是我為什么越來越不喜歡不喜歡php的原因,引個包命名空間煩死了,當然了,php是世界上最好的語言!);
以上是我總結的菲律賓php面試要點,只要上面的看完并且深入理解,offer肯定隨便拿的。建議人事和獵頭也可以給你們的求職者看看,絕對可以大大提高入職率。