一面(約1h)
- 在面對未知的流量暴增,可以預先怎麼處理
- 如何限流,限流算法,對於ddos攻擊怎麼處理
- PHP數組的底層實現
- 分佈式事務
- RPC相對於傳統的API調用的優點
- 服務調度中心的感知與動態上下線
- MySQL的索引,爲什麼是B+而不是平衡二叉樹
- 索引查找在Linux的磁盤上是怎麼操作的
- 聚簇索引相對於B+索引的優點
- 如何分析SQL執行慢的原因
- Redis連接時的connect與pconnect的區別
- Redis有哪些結構時間複雜度較高
- Redis hash的實現
- 算法題: 在1個10G大小的文件中,存儲的都是int型的數據,如何在內存使用小於8M的情況下進行排序
- 設計題: 以微博爲例,有1個億的用戶,同時用戶之間有關注和粉絲,用戶的關注和取關操作比較頻繁,如何設計架構和API接口
二面(約1.5h)
二面主要以自己的項目爲切入點,進一步考察你對項目中知識點的把握程度,我這裏是以一個 自己擼的小項目 進程管理工具 爲項目背景
- 守護進程是什麼,怎麼實現
- PHP是否適合做守護進程,爲什麼(內存管理這一塊)
- PHP的垃圾回收機制
- 進程間通信方式
- 共享內存是怎麼實現的
- 怎麼查看Linux服務器的負載,及判斷哪些操作引起的負載過高
- MySQL的IO過高怎麼優化,分庫分表及分區
- MySQL的索引結構,myisam的索引結構, innodb的索引結構,innodb爲什麼必須要有主鍵索引
- 添加索引,爲什麼可以減少io操作(磁盤頁)
- nginx的負載均衡算法
- 算法題: 忘了
- 算法題:查找一個字符串中最長的無重複字串
上面是我基本還記得的一些題目,考察的力度相對比較深,所以,請選擇一個自己比較熟悉的項目,因爲面試官是會剖析到底層的
三面(約0.6h)
三面與二面的內容差不多,沒有更深的問題,但是,需要注重細節,同時三面面試官有時間會放煙霧彈,堅定自己的立場就好
- 面試題: 在一個橫向和縱向都是遞增的有界二維座標軸中,如何快速判斷某個數是否存在於這個二維座標中
- 面試題:設計一個定時任務管理器(從我同事那打聽到的,我只有上面一個算法題)
Hr面(約0.5h)
hr小姐姐:你有什麼心儀的公司嗎
我: 大廠,類似於BAT這種
hr小姐姐:爲什麼呢?
我: 我感覺 阿里的架構不錯,微博鳥哥待過,技術架構肯定吊吊的。。。
hr小姐姐:你跟我在北京面的其他候選人都不太一樣啊,他們都不屑於去這些公司,感覺想進就進,他們比較傾向於滴滴,頭條這些年輕,發展比較快速的公司
我:卒。。。(畢竟我畢業才一年半啊-_-,校招還因爲自己不在意,完美錯過了所有大廠的招聘)
總結
頭條面試,算法是必考項,但是面試官都是讓我給出思路,也沒寫多少行代碼
涉獵範圍一般,基本就是Redis MySQL ,Nginx比較少,可能配置簡單吧
深度較深,很少人會去關注PHP的垃圾回收,何爲垃圾,線程安全,array的HashTable實現這些內容, Redis Hash表等