中級PHP開發(fā)面試經(jīng)驗(yàn)及問題總結(jié)
標(biāo)簽 : 中級 PHP 面試
對于互聯(lián)網(wǎng)的從業(yè)人員來說,每年的3锄俄,4月份可以說是一個跳槽的黃金時期,也因此業(yè)內(nèi)有金三銀四的說法千贯。本人在上一家公司工作三年之后也漸漸按耐不住激動的心情選擇了跳槽。在經(jīng)過了半個多月的面試之后送朱,對于目前市場上對于 3 年左右的程序員的的一個技能需求大概有了了解娘荡,對于個人的短板也有了一個更加全面的認(rèn)識。今天我把最近一段時間面試中遇到的一些問題和考察的技能點(diǎn)總結(jié)下來驶沼,以供大家參考炮沐。也希望無論是否正在求職的程序員都能有個對照,如果你 3 年經(jīng)驗(yàn)如果對于下面的問題大部分還不了解的話回怜,那就需要有危機(jī)感了大年。
總的來說换薄,3 年經(jīng)驗(yàn)的程序員面試一般還是以技術(shù)考察為主,基礎(chǔ)和架構(gòu)都會涉及翔试,問題也會相對深入轻要。一般面試官會根據(jù)你在上一家工作的經(jīng)歷以及你上一家公司的技術(shù)情況(業(yè)務(wù)規(guī)模,PV垦缅,數(shù)據(jù)量冲泥、并發(fā)量)對你的技術(shù)有個大概的了解,然后結(jié)合你的實(shí)際項(xiàng)目進(jìn)行考察壁涎》不校考察的主要有數(shù)據(jù)庫、系統(tǒng)怔球、網(wǎng)絡(luò)嚼酝、架構(gòu)、前端竟坛、算法闽巩、面向?qū)ο蠛驮O(shè)計(jì)模式等這些方面,數(shù)據(jù)庫索引優(yōu)化流码、高并發(fā)場景又官、Redis的使用幾乎是每家面試的,在 Linux 系統(tǒng)下操作日志漫试、文件的方法大部分公司也會考察六敬。
下面我將分門別類列出面試中遇到的一些問題,在每個問題后面并以 * 標(biāo)識每個問題問到的頻率和重要性(最高為 5 )驾荣,希望能給大家面試準(zhǔn)備和技術(shù)學(xué)習(xí)提供一個方向
數(shù)據(jù)庫
數(shù)據(jù)庫基本是每家面試考察的重點(diǎn)外构,主要方向是 Mysql 索引及優(yōu)化,基本每家面試都會問到
Mysql 索引及其優(yōu)化
Mysql 索引及其優(yōu)化幾乎是每家面試都需要問的問題播掷,重點(diǎn)考察的是 Mysql 聯(lián)合索引的最左原則审编,這點(diǎn)必須要掌握
- Mysql 的索引有哪些 (* * * * *)
- Mysql 聯(lián)合索引的數(shù)據(jù)結(jié)構(gòu),為什么要用這個數(shù)據(jù)結(jié)構(gòu)歧匈,有什么優(yōu)點(diǎn)(* * * *)
- Mysql 聯(lián)合聯(lián)合索引的最左原則垒酬,以及如何根據(jù)查詢情況和字段數(shù)據(jù)分布確定聯(lián)合索引的順序 (* * * * *)
- 如何使用 Explain 語句分析 Sql 查詢情況(如何看查詢用了是否用了索引,用了哪些索引)(* * *)
- Sql 語句在 Mysql 里面執(zhí)行過程(* * *)
參考資料
- 索引基礎(chǔ)——B-Tree件炉、B+Tree勘究、紅黑樹、B*Tree數(shù)據(jù)結(jié)構(gòu)
- Mysql索引優(yōu)化
- 細(xì)說MySQL索引
- mysql性能優(yōu)化之索引優(yōu)化
- MySQL架構(gòu)設(shè)計(jì)——MyISAM存儲引擎與InnoDB存儲引擎
- Mysql explain執(zhí)行計(jì)劃詳解
- MySQL Explain詳解
Mysql 存儲引擎
Mysql 存儲引擎也是面試官喜歡問的一個問題斟冕,主要問題如下
- 你只知道的 Mysql 的存儲引擎有哪些(* * * *)
- MyIsam 和 InnDB 有什么區(qū)別(* * * *)
參考資料
Mysql 事務(wù)和鎖
Mysql 事務(wù)和鎖這類問題也有公司會問到口糕,問到的不多,不過也會有
- Mysql 事務(wù)隔離的四個級別是什么(* *)
- 悲觀鎖和樂觀鎖磕蛇、共享鎖和獨(dú)占鎖有什么區(qū)別(* *)
參考資料
- 理解事務(wù)的4種隔離級別
- MySQL的四種事務(wù)隔離級別
- 數(shù)據(jù)庫事務(wù)與鎖詳解
- 樂觀鎖和悲觀鎖的區(qū)別(最全面的分析)
- 數(shù)據(jù)庫鎖機(jī)制
其他
也有不少公司會讓你根據(jù)數(shù)據(jù)表寫查詢語句景描,知識點(diǎn)的話有 having 和 where 的區(qū)別以及 case when 的用法十办。還有就是一些實(shí)際的復(fù)雜業(yè)務(wù)場景了。
網(wǎng)絡(luò)
網(wǎng)絡(luò)的一些知識大部分公司也會考超棺,由于這方面實(shí)在是短板向族,吃了不少虧,主要有如下問題说搅。
- 301炸枣、302、304弄唧、305适肠、307、401候引、403侯养、404、408澄干、500逛揩、501、502麸俘、503 等 http 狀態(tài)碼的含義 (* * *)
- http 協(xié)議和 https 協(xié)議的區(qū)別是什么 (* *)
- PHP 上傳文件的原理和過程(* * * *)
- 用戶在瀏覽網(wǎng)頁時辩稽,主要經(jīng)歷的一個過程有哪些(* * *)
- Ngnix 如何和 PHP 進(jìn)行通信,使用 php-fpm 和 Socket 有什么區(qū)別从媚,哪個性能高(* *)
- tcp/ip協(xié)議的三次握手過程(*)
操作系統(tǒng)
操作系統(tǒng)方面主要考察在 Linux 系統(tǒng)下對日志文件的管理和如何查看系統(tǒng)的負(fù)載和運(yùn)行狀況逞泄。在日志文件管理方面主要是 awk、sort拜效、grep 等命令的使用
- 有一個用戶訪問的日志文件喷众,如果從中取出用戶訪問 ip 并排序(* * * *)
- 如何不打開文件查看文件的行數(shù) (* * *)
- 如何查看系統(tǒng)的磁盤、網(wǎng)絡(luò)等情況(* *)
架構(gòu)
架構(gòu)也是公司面試考察的一個重點(diǎn)方向紧憾,主要是提供一個業(yè)務(wù)場景到千,讓你設(shè)計(jì)架構(gòu)方案
- 分布式系統(tǒng)的 CAP 理論是什么,Paxos 協(xié)議解決的是什么問題赴穗,Zookeeper 是否使用過(*)
- 如果讓你設(shè)計(jì)一個秒殺系統(tǒng)憔四,你會怎么設(shè)計(jì)保證系統(tǒng)能夠高并發(fā)的流量以及庫存不超賣。(* * * * *)
- 針對你的秒殺系統(tǒng)般眉,假設(shè)有 5000W 的 UV加矛,你要如何分配你的 Web 服務(wù)器、數(shù)據(jù)庫服務(wù)器煤篙、Redis 服務(wù)器。(*)
- 有一個系統(tǒng)響應(yīng)比較慢毁腿,你要如何確定性能瓶頸并優(yōu)化(* * *)
參考資料
- 分布式中 CAP BASE ACID 理解
- 分布式系統(tǒng)事務(wù)一致性到CAP,BASE理論
- 分布式服務(wù)化系統(tǒng)一致性的“最佳實(shí)干”
- 秒殺系統(tǒng)架構(gòu)
- 高并發(fā)秒殺系統(tǒng)的優(yōu)化
- 秒殺系統(tǒng)架構(gòu)分析與實(shí)戰(zhàn)
Redis
Redis 也是面試官非常喜歡問的一個問題辑奈,主要是考察 Redis 的一些基本知識以及應(yīng)用場景
- Redis 的五種數(shù)據(jù)類型有哪些(* * *)
- Redis 里面 list 的最大長度是多少(*)
- Redis 的事務(wù)和發(fā)布訂閱相關(guān)知識(*)
- Redis 原子計(jì)數(shù)器的實(shí)現(xiàn)原理是什么(*)
- 如何使用 Redis 實(shí)現(xiàn)分布式鎖(*)
- 你的項(xiàng)目中都哪些業(yè)務(wù)場景用到了Redis(* * * * *)
前端問題
一般面試 PHP 程序員并不會怎么問前端問題苛茂,不過也會有一些公司問到,這時候你如果完全懵逼當(dāng)然是不太好的鸠窗,下面是我再面試中遇到的一些前端問題妓羊。
- 什么是跨域問題,如何解決(* *)
- JSONP 的實(shí)現(xiàn)原理(*)
參考資料
面向?qū)ο蠛驮O(shè)計(jì)模式
面向?qū)ο蠓矫娴囊恍┲R也會問到躁绸,不過問的不多,主要有一下問題
- 面向?qū)ο蟮娜筇匦杂心男?)
- 多態(tài)和重載的區(qū)別是什么(* *)
設(shè)計(jì)模式方面考察的并不是特別多臣嚣,主要是在筆試的時候?qū)崿F(xiàn)一個單例模式净刮,展開的話會問幾個工廠模式的區(qū)別和用法,或者問你工作總用到的設(shè)計(jì)模式
PHP 的基本知識
面試 PHP 程序員通常也會有 PHP 相關(guān)知識的考察硅则,主要有以下幾個方面的問題
- 是否閱讀過 PHP 源碼淹父,能否寫 PHP 擴(kuò)展,PHP 的架構(gòu)是什么(*)
- PHP 的垃圾回收機(jī)制是什么(* * *)
- 對于字符串和數(shù)字的比較怎虫,PHP 的比較過程是什么(* *)
- empty暑认,== 等一些語法細(xì)節(jié)(* *)
- PHP 都有哪些魔術(shù)方法(* * *)
算法
算法方面除了讓你手寫二分法查找多一些之外,很少會考察課本的基本算法了大审,但如果你作死把話題往這邊引的話蘸际,面試官是不介意考你一下的,不過也主要是那幾個常用的排序算法徒扶。不放心的話可以把二分法查找的排序算法復(fù)習(xí)一下粮彤。
不考課本上的算法,面試官一般會結(jié)合實(shí)際業(yè)務(wù)中的問題酷愧,讓你設(shè)計(jì)算法解決并手寫代碼實(shí)現(xiàn)驾诈,主要考察你解決問題的思路和編碼能力。
- 有一個日志文件溶浴,記錄了用戶訪問的 ip 和時間乍迄,如何設(shè)計(jì)算法找出在 10 分鐘內(nèi)訪問超過 500 次的 ip (* * *)
- 有一個 n 維的全是整數(shù)的數(shù)組,取值為 [0, n-1)士败,設(shè)計(jì)算法取出數(shù)組里面的一個重復(fù)元素闯两,要求時間復(fù)雜度 O(n),空間復(fù)雜度 O(1) (*)
- 設(shè)計(jì)一個類似 beyond compare 的字符串比較功能的算法(*)
其他
除了以上知識點(diǎn)外谅将,還有以下相關(guān)的一些知識會問到
- Session 和 Cookie 的區(qū)別(* * *)
- Ngnix 的架構(gòu)是什么漾狼,配置文件的載入過程是什么(*)
- 什么是對稱加密和非對稱加密,各有哪些算法(*)
- Unicode 什么饥臂,Utf-8 和 Utf-32 以及 GBK 編碼的區(qū)別(*)
- 在支付過程中逊躁,有哪些策略保證數(shù)據(jù)安全性,防止數(shù)據(jù)被篡改(*)
- 設(shè)計(jì)一個權(quán)限管理系統(tǒng)隅熙,你要如設(shè)計(jì)表結(jié)構(gòu)(*)
通過以上總結(jié)我們可以知道稽煤,對于中級 PHP 程序員的面試核芽,數(shù)據(jù)庫、系統(tǒng)酵熙、網(wǎng)絡(luò)轧简、架構(gòu)是面試的一個重點(diǎn)方向,架構(gòu)主要針對高并發(fā)匾二、大量數(shù)據(jù)處理哮独,系統(tǒng)主要是性能分析和日志操作。面試官在面試時也會主要根據(jù)你的工作經(jīng)驗(yàn)及簡歷做相應(yīng)的提問察藐。希望這篇文章能大家以后的技術(shù)學(xué)習(xí)及面試準(zhǔn)備提供一個參考皮璧。