搜尋
首頁後端開發php教程記錄疫情下PHP中高階面試重點

由於疫情的原因,是視訊面試,甲方陣容hr 主管一人,產品經理一人,本次面試直接負責人技術總監A,另外兩人好像是同崗位不同部門負責人(B 和C)(嗯,年齡都是35 )。

話不多說直接上題。 (有些想用冒號分隔的,奈何鍵盤的冒號鍵和tab 好像壞了)

開場時, hr 介紹了本次參與面試的各成員即職位,然後了解他的疑問,產品經理詢問了本辭職的原因和想要了解的問題。

接下來正戲開始了。

總監 A: 看你對 MySQL 掌握的很熟練,說說 MySQL 的隔離等級。 。

我: MySQL 交易的隔離等級從第到高分別是讀取未提交,讀取已提交,可重複讀取,串行化,MySQL 預設的隔離等級是可重複讀取,交易並發可能引發的問題是臟讀,不可重複讀,幻讀,然後分別闡述了引發這幾種狀況的操作即解決方案。

總監 A: 你在實際場景中是更有趣的策略來修改隔離等級的。

我: …. (這裡省略號意思是我胡詌一些場景,其實是有點懵的,因為我只處理過千萬級別的訪問量數據,但是不是高並發,所以並未涉及修改隔離界別,還是平常思考的深度不夠啊)

總監A: innodb 的索引有哪些,它是怎麼實現的。

我: 主鍵 唯一 普通 聯合索引,有 B 樹、B 樹、hash 的實現的。

總監 A: 這幾實現有什麼區別,你平時設計索引時是更具是什麼策略來選擇它們的。

我: B 樹和 B 樹是在資料在葉子結點上不一樣,在樹的深度上不一樣,相同的檢索,B 樹要比 B 樹多一次的 IO。根據實際業務場景來選擇不一樣索引演算法,如果是讀多寫少,我會選擇B 樹(實際上內心沒底,因為忘了)

總監A: MySQL 鎖的分類,作用,你在實際工作的中使用場景。

我: (此時內心有些打鼓,因為之前面試都是由淺入深)… 然後簡述我的理解,但是實際上答案並不滿意。因為 B 和 C 也插入其他問題。

總監 B: 分散式熟悉嗎,分散式鎖定怎麼實現,了解 etcd 嗎。

我: 可以使用redis 的setnx 結合過期時間實現,因為這塊我之前在業務中實現過,etcd,這個沒了解過(心裡就沒有這個概念),還,,(被打斷)

總監C: 時間有限,我們繼續其他問題,看你做過PHP 優化,opcahche 是怎麼用的。

我: ( 冥思了一下),,操作碼解析優化.

總監C: opcode 呢

我: 這個沒印象了,(這個確實沒印象了,因為之前基於業務場景,我從前端,cdn,伺服器反向代理,資料庫緩存,和程式邏輯程式碼的最佳化,專案就有了一個質的提升,但就是唯獨沒有這個opchache 和opcode 的東西接觸,失誤啊)

總監C: 簡述一下url 發生的過程,說重點就行

我瀏覽器輸入url 之後解析成IP,然後請求發送到web 伺服器,如果是nginx就會透過cgi 發送給PHP-FPM,然後等待PHP 腳本解析,處理邏輯,回應資料。

總監 C: cgi 是什麼東西,用來幹嘛的

我: cgi 是一個協議,是類似於 PHP 這樣的語言和 web 伺服器通訊一個協定。

總監 B: PHP-FPM 是什麼架構模式的,你要怎麼優化過它。

我: 它是一個master(主)-worker(工作進程)的架構模式,正真處理請求的是work 進程,master 主要是管理和回收子進程,優化的話,曾經有更改過它的進程數的配置,我大概簡述一下: 由於之前配置的靜態模式,預設的200 個進程數,後來有了一定的並發,我就該改成「第三種」 配置模式,配置指定數量的進程數,有個最小值和最大值(最大值這裡其實是忘了,就是想這肯定不能沒有限制,畢竟硬體資源就是天花板呢),然後根據實際的請求數,然後動態的增加進程數量。

總監B: 還有其他優化嗎

我: (沉默了會兒,其實當時修改時還是做了其他修改的,但是確實忘了,感覺此次面試拉跨了),當時確實還做了其他優化來的,但想不起來了。

總監 B: 說說你使用到的 rabbitmq 和你對他的理解。

我 : (簡述了 rabbitmq 的架構)以及我的使用場景和業務。

總監 B: 說說你用到的 topic 模式

我: ( 簡述了 topic 的使用流程,算是過關了)。

總監 A: 說說 redis 分片。

我: 分片就是將key 分割到多個redis 實例的處理過程,利用的是多台計算機的內存,cpu 的處理能力,提高,,,,

總監A : 怎麼樣實現排行榜

我: 可以使用redis 的有序集合,因為它有分數,,,

總監 A: 用那個函數取值的

我: (回憶了下,確實想不起來了) 這個忘記了,什麼 member 的函數。

總監A: 說說AOP 的,使用過嗎

我: aop 切面編程,就是使用動態代理等技術使功能模組的統一維護,有點像laravel 的facade(心裡沒底,想內比來的,失敗)。

總監A: 說hyperf 的特點

我: 基於swoole,插件化的高效能、高靈活的協程框架,它是依賴注入的容器化,aop 模式,註解模式,事件模式,,,

總監A: 說說協程池和協程狀態管理

我: (這裡實際上沒有答上來,實際上後來思考了下還是能回答部分的,至少協程狀態管理是可以解答的)

總監A: 如果會go,這個問題很簡單

總監A: 說說laravel

我: (這裡算是我的強項了,就不一一簡述了)

總監B: 說說Linux 吧和shell 腳本

我: (簡述了Linux 以及常用命令和vi),shell 的表達式和變數定義、使用都是有區別於PHP 語言的。

總監C: 看你使用map reduce 對資料批次處理,說說它吧

我基於monogo 的map redcue 對資料處理,,,(被打斷)

總監C: 我還以為讓hadoop 的map reduce

##總監A: 說說你對未來的規劃吧

我: …

以上是我本次視訊面試的100% 還原,後來細細回想,其實很多都是能有解決方案的,但是為什麼本次面試的效果如此拉跨呢,,,節奏,對就是節奏。就是面試官以來就給了 「深」 東西,打亂了我的節奏。

相關推薦:《

PHP影片教學》《PHP面試題大匯總(收藏)

以上是記錄疫情下PHP中高階面試重點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:learnku。如有侵權,請聯絡admin@php.cn刪除
您如何在PHP中創建和使用接口?您如何在PHP中創建和使用接口?Apr 30, 2025 pm 03:40 PM

本文解釋瞭如何創建,實施和使用PHP中的接口,重點關注其對代碼組織和可維護性的好處。

crypt()和password_hash()有什麼區別?crypt()和password_hash()有什麼區別?Apr 30, 2025 pm 03:39 PM

本文討論了PHP中的crypt()和password_hash()的差異,以進行密碼哈希,重點介紹其實施,安全性和對現代Web應用程序的適用性。

如何防止PHP中的跨站點腳本(XSS)?如何防止PHP中的跨站點腳本(XSS)?Apr 30, 2025 pm 03:38 PM

文章討論了通過輸入驗證,輸出編碼以及使用OWASP ESAPI和HTML淨化器之類的工具來防止PHP中的跨站點腳本(XSS)。

PHP中的自動加載是什麼?PHP中的自動加載是什麼?Apr 30, 2025 pm 03:37 PM

自動加載PHP會在需要時自動加載類文件,從而通過減少內存使用和增強代碼組織來提高性能。最佳實踐包括使用PSR-4和有效組織代碼。

什麼是PHP流?什麼是PHP流?Apr 30, 2025 pm 03:36 PM

PHP流通過一致的API來統一資源諸如文件,網絡插座和壓縮格式之類的處理,從而使復雜性抽象並增強代碼靈活性和效率。

可以使用PHP上傳的文件的最大大小是多少?可以使用PHP上傳的文件的最大大小是多少?Apr 30, 2025 pm 03:35 PM

本文討論了在PHP中管理文件上傳大小的管理,重點是2MB的默認限制以及如何通過修改PHP.INI設置來增加它。

PHP中的無效類型是什麼?PHP中的無效類型是什麼?Apr 30, 2025 pm 03:34 PM

本文討論了PHP 7.1中引入的PHP中的無效類型,允許變量或參數為指定類型或NULL。它突出顯示了諸如提高可讀性,類型安全性和明確意圖的好處,並解釋瞭如何聲明

unset()和unlink()函數之間有什麼區別?unset()和unlink()函數之間有什麼區別?Apr 30, 2025 pm 03:33 PM

本文討論了unset()和unlink()功能在編程中的差異,重點關注其目的和用例。 unset()從內存中刪除變量,而unlink()從文件系統中刪除文件。兩者都對效率至關重要

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中