一個月面試近20家大中小廠,最後成功上岸

2020-09-19 12:04:24

記錄一下最近碰到的比較盲點的面試題。公司都不算大,所以只挑出一些技術性比較強的問題做記錄。

PHP 基礎相關:

  • PHP 編譯的過程?對 opcode 有沒有了解?從 opcode 的角度出發,能否優化一下 php 的速度?

  • PHP 變數底層是如何實現的?

  • Nginx 與 php-fpm 的通訊過程?Nginx 監聽埠和 socket 方式,有何區別? php-fpm 是怎麼呼叫 PHP 程式碼的?

  • PHP 是如何連線 MySQL 的?連線池是如何實現的?

  • 談下 PHP 和 Golang 的區別

  • Swoole 和 Go 中的協程有何區別?

  • Go 中 goruntine 的底層實現?go 中的協程是怎麼通訊的?

函數相關

array_key_exists () 和 in_array () 哪個效能較好?

編碼相關:

  • 說一下你寫的專案中的程式碼架構?(mvc、transformer、中介軟體等)

  • laravel 中常用設計模式(除了依賴注入和控制反轉,還問到了策略模式和裝飾者模式)

  • composer 自動載入機制(psr-4)

資料庫(MySQL)

老生常談的有:常見的優化手段、為什麼使用 B+ 樹儲存、索引型別、隔離級別等。

  • 現在有聯合索引 a,b,c, 使用 select * from table where c=1 and a=2 其中 a 和 c 分別都可以走索引嗎?為什麼

  • 只使用 MySQL 在高並行下的問題

  • MySQL 中使用遞迴

一道筆試題,感覺比較偏,當做補充知識瞭解即可

  • MySQL 執行慢怎麼處理?explain 中 extra 欄位中一般都會出現什麼資訊?如果在 explain 中看到 sql 已經走了索引,但是執行還是慢,會是什麼原因?
using filesort、mmr、using index condition、using index、using where

走了索引還是慢的原因大概有以下幾種:

當前 SQL 語句執行時 MySQL 正好在刷髒頁

二級索引樹上沒有要查詢的欄位,需要回表(需要注意的是,MySQL 的優化器在需要回表,且回表掃描行數過大的時候,會停止使用索引,直接走主鍵索引,這時 extra 欄位中不會出現走索引)可以用聯合索引解決

資料表資料量過大,需要分庫分表等物理優化
  • MySQL 中排它鎖的加鎖時機?能否手動加排它鎖?

  • myisam 引擎和 innodb 儲存資料方式有何不同?myisam 這種儲存方式又有何優點?

  • MySQL 主從出現延遲要如何解決?

Redis 和 NoSQL

  • Redis 和 MongoDB 的區別

  • Redis 快取雪崩、擊穿、穿透的概念和解決方法

  • Redis 哨兵之間如何通訊?

  • Redis 的連線數用完了怎麼辦?

  • 一致性雜湊和雜湊槽的區別?

  • 延時佇列(這個是通過一個解決方案來問的,問題是延時傳送簡訊或郵件如何實現)

  • 如何保證一個介面一個使用者請求在一秒內只能請求一次?

用到了 redis 中的鎖

作業系統

  • 執行緒和協程的區別

網路

  • session 共用

點關注,不迷路

好了各位,以上就是這篇文章的全部內容了,能看到這裡的人呀,都是人才。之前說過,PHP方面的技術點很多,也是因為太多了,實在是寫不過來,寫過來了大家也不會看的太多,所以我這裡把它整理成了PDF和檔案,如果有需要的可以

點選進入暗號: PHP+「平臺」

在這裡插入圖片描述

在這裡插入圖片描述


更多學習內容可以存取【對標大廠】精品PHP架構師教學目錄大全,只要你能看完保證薪資上升一個臺階(持續更新)

以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務程式碼寫多了沒有方向感,不知道該從那裡入手去提升,對此我整理了一些資料,包括但不限於:分散式架構、高可延伸、高效能、高並行、伺服器效能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell指令碼、Docker、微服務、Nginx等多個知識點高階進階乾貨需要的可以免費分享給大家,需要的可以加入我的 PHP技術交流群