2019 PHP 初級 / 基礎面試題,祝你金三銀四跳槽加薪

NiZerin發表於2019-02-15

1、PHP語言的一大優勢是跨平臺,什麼是跨平臺?

PHP的執行環境最優搭配為Apache+MySQL+PHP,此執行環境可以在不同作業系統(例如windows、Linux等)上配置,不受作業系統的限制,所以叫跨平臺

2、WEB開發中資料提交方式有幾種?有什麼區別?百度使用哪種方式?

Get與post兩種方式
區別:
(1)url可見性:get 方式url引數可見,post 不可見
(2)可快取性:get 方式是可以快取的,post 方式不可以快取。
(3)傳輸資料大小:get一般傳輸資料大小不超過2k-4k(根據瀏覽器不同,限制不一樣,但相差不大);post 請求傳輸資料的大小根據php.ini 配置檔案設定,也可以無限大。
(4)資料傳輸上:get 方式透過url位址列拼接引數進行傳輸,post 方式透過body體進行傳輸。
建議:
1、get式安全性較Post式要差些包含機密資訊建議用Post資料提交式;
2、做資料查詢建議用Get式;做資料新增、修改或刪除建議用Post方式;
3丶百度使用的get方式,因為可以從它的URL中看出

3、掌握PHP的哪些框架、模板引擎、系統等

框架:框架有很多,例如CI、Yii、Laravel等等,我們們學過的是thinkphp
模板引擎:也有很多,在課本中有,我們們學過的是smarty
系統:有很多,例如:康盛的產品(uchome、supesite、discuzX等),帝國系統、DEDE(織夢)、ecshop等,我們們學過的是DEDECMS、Ecshop

4、說一下你所掌握的網頁前端技術有哪些?

熟練掌握DIV+CSS網頁佈局,JavaScript,jQuery框架、photoshop圖片處理

5、AJAX的優勢是什麼?

ajax是非同步傳輸技術,可以透過javascript實現,也可以透過JQuery框架實現,實現區域性重新整理,減輕了伺服器的壓力,也提高了使用者體驗。

6、安全對一套程式來說至關重要,請說說在開發中應該注意哪些安全機制?

(1)使用驗證碼防止序號產生器灌水。
(2)使用預處理,繫結引數,引數過濾轉義 防止sql注入
(3)使用token防止遠端提交,使用token驗證登入狀態。

7、在程式的開發中,如何提高程式的執行效率?

(1)最佳化SQL語句,查詢語句中儘量不使用select *,用哪個欄位查哪個欄位;少用子查詢可用表連線代替;少用模糊查詢。
(2)資料表中建立索引。
(3)對程式中經常用到的資料生成快取(比如使用redis快取資料,比如使用ob進行動態頁面靜態化等等)。
(4)對mysql做主從複製,讀寫分離。(提高mysq執行效率和查詢速度)
(5)使用nginx做負載均衡。(將訪問壓力平均分配到多型伺服器)

8、PHP可否與其它的資料庫搭配使用?

PHP與MYSQL資料庫是最優搭配,當然PHP也可以去其它的資料庫搭配使用,例如PostgreSql,SqlServer,Oracle,SqlLite等。

9、現在程式設計中經常採取MVC三層結構,請問MVC分別指哪三層,有什麼優點?

MVC三層分別指:業務模型、檢視、控制器,由控制器層呼叫模型處理資料,然後將資料對映到檢視層進行顯示。

優點是:
①可以實現程式碼的重用性,避免產生程式碼冗餘;
②M和V的實現程式碼分離,從而使同一個程式可以使用不同的表現形式

10、對json資料格式的理解?

JSON(JavaScript Object Notation)是一種輕量級的資料交換格式,json資料格式固定,可以被多種語言用作資料的傳遞。
PHP中處理json格式的函式為json_decode( string $json [, bool $assoc ] ) ,接受一個 JSON格式的字串並且把它轉換為PHP變數,引數json待解碼的json string格式的字串。assoc當該引數為TRUE時,將返回array而非object;
Json_encode:將PHP變數轉換成json格式。

11、Print、echo、print_r有什麼區別?

(1) echo和print都可以做輸出,不同的是,echo不是函式,沒有返回值,而print是一個函式有返回值,所以相對而言如果只是輸出echo會更快,而print_r通常用於列印變數的相關資訊,通常在除錯中使用。
(2) print 是列印字串
(3)print_r 則是列印複合型別 如陣列 物件

12、SESSION與COOKIE的區別?

(1)儲存位置:session儲存於伺服器,cookie儲存於瀏覽器
(2)安全性:session安全性比cookie高
(3)session為‘會話服務’,在使用時需要開啟服務,cookie不需要開啟,可以直接用

13、PHP處理陣列的常用函式?(重點看函式的‘引數’和‘返回值’)

(1)array() 建立陣列
(2)in_array() 判斷元素是否在陣列中
(3)count() 返回陣列中元素的數目
(4)array_merge() 將多個陣列合併成一個陣列
(5)array_diff() 比較兩個或兩個以上陣列的差異
(6)array_intersect() 獲取兩個或兩個陣列以上的交集
(7)array_keys() 獲取陣列的key列表
(8)array_values() 獲取陣列的值列表
(9)array_unique() 刪除陣列中的重複值
(10)array_push()將一個或多個元素插入陣列的末尾(入棧)
(11)array_pop() 彈出並返回 array 陣列的最後一個單元(出棧)
(12)array_walk() 使用使用者自定義函式對陣列中的每個元素做回撥處理

14、PHP處理字串的常用函式?(重點看函式的‘引數’和‘返回值’)

(1)trim() 移除字串兩側的空白字元和其他字元;
(2)strlen() 獲取字串的長度
(3)mb_strlen() 獲取字串長度(可指定字元編碼,對中文字串計算長度)
(4)substr()返回字串的一部分;
(5)str_replace() 子字串替換
(6)str_repeat () 重複一個字串
(7)is_string() 檢測變數是否是字串;
(8)str_shuffle () 隨機打亂一個字串
(9)sprintf() 返回根據格式化字串生成的字串(通常用於獲取分表後的資料表名)
(10)strstr() 查詢字串的首次出現
(11)addslashes 使用反斜線引用字串

15、PHP處理時間的常用函式?(重點看函式的‘引數’和‘返回值’)

(1)date() 格式化一個本地時間/日期。
(2)getdate() 取得日期/時間資訊。
(3)date_default_timezone_set() 設定預設時區。
(4)date_default_timezone_get() 返回預設時區。
(5)mktime() 返回一個日期的 Unix時間戳。
(6)strtotime() 將任何字串的日期時間描述解析為 Unix 時間戳
(7)strftime() 根據區域設定格式化本地時間/日期

16、PHP處理資料庫的常用函式?(重點看函式的‘引數’和‘返回值’)

請參照php手冊,認真檢視,此項非常重要

17、PHP操作檔案的常用函式?(重點看函式的‘引數’和‘返回值’)

(1)開啟檔案 fopen()
(2)讀取檔案 fgets() ; 注:file_get_contents()也是讀取檔案
(3)寫入檔案fwrite() ; 注:file_put_contents()同樣可以寫入檔案
(4)關閉檔案控制程式碼 fclose()
(5)移動 / 重新命名檔案 rename()
(6)複製檔案 copy()
(7)建立檔案 vim 或 touch
(8)刪除檔案 unlink()
(9)獲取檔案上次訪問的時間 fileatime()
(10)獲取檔案上次修改的時間 filemtime()
(11)獲取檔案大小 filesize()
(12)獲取檔案型別 filetype()
(13)獲取檔案詳細資訊 state()
(14)判斷是否是目錄 is_dir()

18、PHP操作目錄(資料夾)的常用函式?(重點看函式的‘引數’和‘返回值’)

(1)開啟目錄 opendir()
(2)讀取目錄 readdir()
(3)刪除目錄 rmdir()
(4)關閉目錄控制程式碼 closedir()
(5)建立目錄 mkdir()
(6)返回路徑中的目錄部分 dirname()
(7)取得當前工作目錄 getcwd()
(8)列出指定路徑中的檔案和目錄 scandir()

本作品採用《CC 協議》,轉載必須註明作者和本文連結
By: Laravel-China NiZerin Blog: nizer.in

相關文章