## **1. 什么事面向對象?主要特征是什么**
面向對象是程序的一種設計方式,它利于提高程序的重用性,使程序結構更加清晰。主要特征:封裝、繼承、多態。
## **2. isset() 和 empty() 區別**
isset判斷變量是否存在,可以傳入多個變量,若其中一個變量不存在則返回假;empty判斷變量是否為空為假,只可傳一個變量,如果為空為假則返回真。
## **3. foo()和@foo()之間有什么區別?**
@代表所有warning忽略
## **4. PHP 如何定義變量, 兩個變量定義符 $$ 是什么意思**
$ 定義變量 ;$$ 直接使用引用變量
## **5. 語句include和require的區別是什么?為避免多次包含同一文件,可用什么語句代替它們?**
區別:在失敗的時候:include產生一個warning,而require產生直接產生錯誤中斷require在運行前載入include在運行時載入代替:require\_onceinclude\_once
## **6. echo、print\_r、print、var\_dump區別**
echo:語句結構;print:是函數,有返回值print\_r:能打印數組,對象var\_dump:能打印對象數組,并且帶數據類型
## **7. $this和self、parent這三個關鍵詞分別代表什么?在哪些場合下使用?**
$this 當前對象self 當前類parent 當前類的父類
$this在當前類中使用,使用->調用屬性和方法self也在當前類中使用,不過需要使用::調用parent在類中使用
## **8. 作用域操作符::如何使用?都在哪些場合下使用?**
調用類常量調用靜態方法
## **9. 簡述常用字符串函數。**
~~~php
serialize()、unserialize() 序列化是將變量轉換為可保存或傳輸的字符串的過程。
strlen() 返回字符串長度。
strrev() 反轉字符串。
strpos(原字符串,待查找字符串) 存在返回第一個字符下標,不存在返回false。
strstr(原字符串,待查找字符串) 返回待查找字符串及其后剩余部分,不存在返回false。
str_replace("world", "Kitty", "Hello world!") 將某個字符串替換為另一個字符串。
explode(" ",原字符串) 將原字符串按分割字符串轉成數組。
implode(" ",原數組) 將原數組中的元素連接分割字符組合成字符串。
trim() 移除字符串兩側的空白字符和其他字符。ltrim()移除左邊、rtrim()移除右邊。
substr("Hello world",6) 返回字符串的一部分。
substr_replace(string,replacement,start,length) 函數把字符串的一部分替換為另一個字符串。
htmlspecialchars() 把一些預定義的字符轉換為 HTML 實體。
str_repeat("Shanghai",5) 字符串重復指定次數。
str_split("Shanghai",3) 將字符串分割成數組,可以指定每個數組元素長度。
~~~
## **10. 簡述常用數組函數**
~~~php
array_keys() 返回數組中所有的鍵名。
array_values() 返回數組中所有的值。
array_shift() 刪除數組中首個元素,并返回被刪除元素的值。
array_unshift() 在數組開頭插入一個或多個元素,并返回數組元素個數。
array_diff() 比較數組,返回差集(只比較鍵值)。
array_intersect() 比較數組,返回交集(只比較鍵值)。
array_diff_assoc() 比較數組,返回差集(比較鍵名和鍵值)。
array_merge() 把一個或多個數組合并為一個數組。
array_pop() 刪除數組的最后一個元素(出棧)。
array_push() 將一個或多個元素插入數組的末尾(入棧)。
sort() 對數組進行升序排序。
rsort() 對數組進行降序(逆向)排序。
asort() 對關聯數組按照鍵值進行升序排序。
ksort() 對數組按照鍵名進行升序排序。
array_rand() 返回數組中一個或多個隨機的鍵。
array_combine() 通過合并兩個數組來創建一個新數組。
array_unique() 刪除數組中的重復值。
~~~
## **11. SESSION 與 COOKIE的區別是什么,請從協議,產生的原因與作用說明?**
A、http無狀態協議,不能區分用戶是否是從同一個網站上來的,同一個用戶請求不同的頁面不能看做是同一個用戶。B、SESSION存儲在服務器端,COOKIE保存在客戶端。Session比較安全,cookie用某些手段可以修改,不安全。Session依賴于cookie進行傳遞。禁用cookie后,session不能正常使用。Session的缺點:保存在服務器端,每次讀取都從服務器進行讀取,對服務器有資源消耗。Session保存在服務器端的文件或數據庫中,默認保存在文件中,文件路徑由php配置文件的session.save\_path指定。Session文件是公有的。
## **12. MyISAM和 InnoDB 的基本區別?索引結構如何實現 ?**
A、MyISAM類型不支持事務,表鎖,易產生碎片,要經常優化,讀寫速度較快,適合用于頻繁查詢的應用;B、InnoDB類型支持事務,行鎖,有崩潰恢復能力,讀寫速度比MyISAM慢,適合于插入和更新操作比較多的應用,空間占用大,不支持全文索引等。創建索引:alert table tablename add index 索引名 (`字段名`)
## **13. 數據庫事務是什么?**
是用戶定義的一個數據庫操作序列,這些操作要么都做,要么都不做,是一個不可分割的工作單位。
## **14.產生死鎖的條件**
1.互斥條件:一個資源每次只能被一個進程使用。
2.請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
3.不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。
4.循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。
## **15. MVC各個部分是由什么實現?怎樣實現?**
~~~
~~~
## **16. 請簡單寫一個ajax事件。**
~~~
~~~
## **17. 怎樣用一個7升的瓶子和一個5升的瓶子準確的量出6升水?**
## 要求
以下為PHP系統中運用的技術相關的信息內容:
1. PHP版本使用情況:
現主要使用的PHP版本為5.2, 少數業務處理使用的PHP7, 需熟悉在PHP5.2下,一些開發的限制;
2. PHP使用框架情況:
現主要使用的PHP框架為自主封裝的框架,類TP3.2版本,MVC結構, 少數業務使用workerman框架, TP5框架;
3. 前端使用情況:
現主要是用的前端框架包括jquery,easyui,jqgrid, 另外需要熟悉一些常用的組件,包括樹形組件, 下拉組件, tab組件, 驗證組件等等;
4. 數據庫情況:
主要使用的是mysql數據庫, 需了解 mysql中關于索引問題, 鎖表問題, 分表問題, 優化查詢等;
5. 代碼維護情況:
現主要使用svn作為中控管理, 另需能使用git;
6. 另外需要具備的一些技能:
部署項目,包括apache安裝部署, php配置處理, 文件差異對比處理, 接口開發規范, ERP系統對接經驗等;