
PHP 面試一戰到底
內容描述
本書基於PHP**版本撰寫,主要講解了以下四部分的內容:PHP的基礎知識和環境搭建;PHP語言層面的知識,包括數據類型、變量、函數、類和對象、字符串、數組、文件與目錄、PHP 7新特性等;其他必須要掌握的PHP語言之外的知識和技能,包括關系型數據庫、非關系型數據庫、常見的數據結構與算法、常見漏洞及其防範措施、電腦網絡、操作系統、設計模式、Nginx、PHP-FPM、高並發應對、Restful、日誌等;面試攻略和職業規劃。本書註重基礎知識,深入底層原理,以提高學習能力為道,以傳授面試技巧為術,希望面試者能夠發揮出自己的真才實學。 本書適合於即將或正在面試的PHP初級或中級程序員、對PHP開發感興趣的人員、有一定的PHP開發經驗,希望更深入瞭解的人員、有編程經驗,希望轉型做PHP開發的人員使用。
目錄大綱
目錄
第1章 PHP開發基礎知識 1
1.1 環境搭建 1
1.1.1 下載與安裝 2
1.1.2 CLI模式 2
1.1.3 CGI模式 3
1.1.4 開發工具 6
1.2 基本語法 10
1.2.1 基本規範 10
1.2.2 數據類型 10
1.2.3 變量 11
1.2.4 常量 12
1.2.5 運算符 13
1.2.6 流程控制 13
1.2.7 函數 15
1.2.8 字符串 16
1.2.9 數組 16
1.2.10 類與對象 17
1.2.11 異常處理 18
1.2.12 命名空間 19
1.3 本章小結 19
1.4 練習 19
第2章 數據類型 20
2.1 布爾類型 20
2.1.1 概念 20
2.1.2 面試題:冒泡排序 21
2.1.3 類型轉換 22
2.1.4 面試題:布爾數據比較 22
2.2 整型 23
2.2.1 概念 23
2.2.2 面試題:大數求和 23
2.3 浮點型 25
2.3.1 概念 25
2.3.2 面試題:浮點數的比較 25
2.3.3 面試題:證明題 26
2.3.4 面試題:比較兩個浮點數的大小 26
2.4 字符串 26
2.4.1 概念 26
2.4.2 面試題:從string中取其中的單個字符 27
2.4.3 面試題:求字符串表示的最大長度 27
2.4.4 面試題:反轉字符串 28
2.5 數組 29
2.6 對象 29
2.7 回調函數 29
2.7.1 概念 29
2.7.2 回調函數的使用 30
2.7.3 面試題:call_user_func()和call_user_func_array()的區別 32
2.8 迭代器 33
2.9 資源 33
2.10 NULL值 34
2.10.1 概念 34
2.10.2 面試題:NULL值比較 34
2.11 本章小結 34
2.12 練習 35
第3章 變量 36
3.1 變量引用 36
3.1.1 指針與引用 36
3.1.2 引用的取消 37
3.1.3 forech的引用陷阱 37
3.2 預定義變量 40
3.2.1 概念 40
3.2.2 面試題:執行腳本的位置 41
3.3.3 面試題:獲取當前訪問頁面的URL 42
3.3 垃圾回收機制 42
3.4 作用域 43
3.4.1 函數作用域 43
3.4.2 global關鍵字 44
3.4.3 引用文件的變量作用域 44
3.4.4 超全局變量 44
3.5 本章小結 45
3.6 練習 45
第4章 函數 47
4.1 匿名函數與閉包 47
4.1.1 匿名函數與閉包的概念 47
4.1.2 匿名函數里的變量作用域 48
4.1.3 面試題:匿名函數中_REQUEST 245
13.2.3 $_SERVER 246
13.2.4 數字校驗 246
13.2.5 字符串校驗 246
13.2.6 路徑校驗 247
13.3 XSS攻擊 248
13.3.1 屬性過濾 249
13.3.2 JSON與XSS 250
13.4 SQL註入 251
13.4.1 SQL Escaping 252
13.4.2 PDO的安全機制 253
13.5 CSRF攻擊 254
13.6 SSRF攻擊 257
13.7 短信轟炸 258
13.8 接口防刷 260
13.9 本章小結 261
13.10 練習 262
第14章 常見面試題 263
14.1 電腦網絡相關面試題 263
14.1.1 網絡7層協議 263
14.1.2 IP地址分類 264
14.1.3 HTTP狀態碼 265
14.1.4 POST和GET的區別 266
14.1.5 TCP 與 UDP 的區別 266
14.1.6 TCP 三次握手 267
14.1.7 Session和Cookie的區別 268
14.1.8 HTTP和HTTPS的區別 268
14.2 操作系統相關面試題 270
14.2.1 操作系統的作用是什麽 270
14.2.2 操作系統的特性是什麽 270
14.2.3 並發和並行的區別是什麽 270
14.2.4 進程和線程的區別是什麽 270
14.2.5 進程的狀態有哪些 271
14.2.6 常見存儲介質的訪問速度 272
14.2.7 操作系統管理內存的機制有哪些 272
14.2.8 什麽是虛擬內存,虛擬內存有什麽作用 274
14.2.9 什麽是死鎖,死鎖發生的條件是什麽 274
14.3 設計模式相關面試題 274
14.3.1 單例模式 274
14.3.2 抽象工廠 275
14.3.3 適配器模式 277
14.4 Nginx相關面試題 278
14.4.1 Nginx有哪些優點 278
14.4.2 Nginx架構如何 278
14.4.3 Nginx如何處理連接 280
14.4.4 Nginx與Apache有什麽差別 280
14.4.5 Nginx如何做負載均衡 281
14.4.6 什麽是反向代理 281
14.4.7 sites-available和sites-enabled有什麽區別 282
14.4.8 Nginx如何處理請求 282
14.4.9 Nginx的Worker數量如何設置 284
14.5 PHP-FPM相關面試題 284
14.5.1 CGI與FastCGI的區別是什麽 284
14.5.2 Nginx與PHP-FPM通信的方式有哪些 285
14.5.3 PHP-FPM的進程管理方式有哪幾種 285
14.5.4 PHP-FPM配置worker數量時,需要考慮哪些因素 285
14.5.5 PHP-FPM 事件驅動機制 286
14.6 Linux 287
14.6.1 一個文件設置為600,代表什麽權限 287
14.6.2 如何設置文件的權限 287
14.6.3 如何查找訪問次數最多的IP 288
14.6.4 請描述Linux的事件模型 289
14.7 關於高並發 290
14.8 Restful風格 292
14.8.1 Rest 如何做版本控制 292
14.8.2 如何評價RESTful風格 292
14.9 日誌 293
14.9.1 日誌級別 293
14.9.2 日誌最佳實踐 294
14.10 本章小結 294
14.11 練習 294
第15章 面試攻略 296
15.1 規劃階段 297
15.1.1 離職原因 297
15.1.2 自我定位 297
15.1.3 成長目標 298
15.1.4 行業選擇 298
15.2 準備階段 299
15.2.1 撰寫簡歷 299
15.2.2 瞭解目標 301
15.2.3 投遞簡歷 301
15.2.4 約定時間 302
15.3 面試階段 302
15.3.1 面試禮儀 302
15.3.2 技術面試 303
15.3.3 項目面試 303
15.3.4 HR面試 303
15.4 Offer選擇 303
15.5 入職階段 304
15.5.1 背景調查 304
15.5.2 薪資核驗 305
15.5.3 辦理離職手續 305
15.5.4 正式入職新公司 305
15.6 面試的其他問題 306
15.6.1 關於“面試造大炮,工作打蚊子” 306
15.6.2 感覺面試官刁難自己 306
15.7 本章小結 306
15.8 練習 306
第16章 職業漫談 307
16.1 職業發展 307
16.2 能力框架 308
16.3 工作與總結 309
16.4 技術晉升 309
16.5 技術儲備 310
16.6 PHP工程師的Plan B 311
16.7 本章小結 311
參考書目及資料 312
作者介紹
閆小坤
畢業於中國科學技術大學,計算機碩士。
服務端技術專家,10餘年PHP開發經驗。
曾就職於騰訊、滴滴等互聯網公司,有良好的架構能力和豐富的業務抽象經驗。