記錄最近的幾次面試(PHP)

如夢又似幻發表於2020-07-14

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

PHP 基礎相關:
  • PHP 編譯的過程?對 opcode 有沒有了解?從 opcode 的角度出發,能否優化一下 php 的速度?
  • PHP 變數底層是如何實現的?
  • Nginx 與 php-fpm 的通訊過程?Nginx 監聽埠和socket 方式,有何區別? php-fpm 是怎麼呼叫 PHP 程式碼的?
  • PHP 是如何連線 MySQL 的?連線池是如何實現的?
  • 談下 PHP 和 Golang 的區別
  • Swoole 和 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 這種儲存方式又有何優點?
Redis 和 NoSQL
  • Redis 和 MongoDB 的區別
  • Redis 快取雪崩、擊穿、穿透的概念和解決方法
  • Redis 哨兵之間如何通訊?
  • Redis 的連線數用完了怎麼辦?
  • 一致性雜湊和雜湊槽的區別?
  • 延時佇列(這個是通過一個解決方案來問的,問題是延時傳送簡訊或郵件如何實現)
  • 如何保證一個介面一個使用者請求在一秒內只能請求一次?

    用到了 redis 中的鎖

作業系統
  • 執行緒和協程的區別
網路
  • session 共享
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章