轉載於:http://www.php.cn/toutiao-415599.htmlphp
1.PHP中傳值與傳引用的區別,何時傳值,何時傳引用?html
按值傳遞:函數範圍內對值任何改變在函數外部都會被忽略.web
按引用傳遞:函數範圍內對值任何改變在函數外部也能反映出這些修改.redis
2.MySql數據庫中的字段類型varcher和char的主要區別是什麼?算法
varcher是變長,節省儲存空間,char是固定長度.查找效率要char型要快,由於varcher是非定長,必須先查找長度,而後進行數據的提取,比char定長類型多了一個步驟,因此效率低一些.sql
3.MySql數據庫的經常使用存儲引擎以及它們的區別?數據庫
MyISAM:不支持事務,表鎖,易產生碎片,要常常優化,讀寫速度比較快,支持全文索引.數組
innoDB:支持事務,行鎖,有崩潰恢復能力.讀寫速度比MyISAM慢,5.6後支持全文索引.緩存
4.對於大流量網站,採用什麼樣的方法來解決訪問量問題?安全
首先,確認服務器硬件是否足夠支持當前流量
其次,優化數據庫訪問
第三,禁用外部盜鏈
第四,控制大文件下載
第五,使用不一樣主機分流主要流量
第六,使用流量分析統計軟件
第七,儘可能使用靜態頁面,緩存
5.什麼是面向對象,主要特徵是什麼?
面向對象是程序設計的一種方式,它利於提升程序的複用性,使程序更加清晰,主要特徵:封裝,繼承,多態.
6.session與cookie的區別是什麼?
session存儲在服務器端,cookie是存儲在客戶端.session比較安全,cookie用某些手段能夠修改,不安全,session依賴於cookie進行傳遞.禁用cookie後,session仍是可使用,在存儲session的文件中,生成sessionId,經過get傳參方式將sessionId傳到要實現session共享的頁面,讀取sessionId,從而從session中獲取數據.
7.對緩存技術的瞭解?redis是個考點
緩存技術是將動態的內容緩存在文件中,在必定時間內訪問動態頁面直接調用緩存文件,而沒必要從新訪問數據庫.
使用memcache能夠作緩存
8.表單中get和post提交方式的區別
get是顯示的,數據從url地址欄能夠看見,傳輸量小,安全性低.
post是隱式的,傳輸的數據量較大,安全性較高
9.優化數據庫方法
選取最實用的字段屬性,儘量減小定義字段高度,儘可能把字段設置notnull
使用鏈接join來代替查詢
使用聯合union來代替手動建立的臨時表
事務處理
鎖定表,優化事務處理
使用外鍵,優化鎖定表
使用索引
優化查詢語句
10.語句include和require的區別是什麼?
require:是無條件包含,也就是一個流程加入require,不管條件成立與否都會先執行require,當文件不存在和沒法打開時,會提示錯誤,而且終止程序.
include:有返回值,而require沒有(可能由於如此require的速度比include快),若是被包含的文件不存在,那麼會提示一個錯誤,程序會繼續執行下去.
11.redis和memcacahe、mongoDB的區別?
都是非關係型數據庫,性能都很是高,可是mongoDB和memcache、redis是不一樣的兩種類型。後二者主要用於數據的緩存,前者主要用在查詢和儲存大數據方面,是最接近數據庫的文檔型的非關係數據庫。
從數據存儲位置上來分,memcache的數據存在內存中,而redis既能夠存儲在內存中,也能夠存儲的到磁盤中,達到持久化存儲的功能,memcache一旦斷電,數據所有丟失,redis能夠利用快照和AOF把數據存到磁盤中,當恢復時又從磁盤中讀取到內存中,當物理內存使用完畢後,能夠把數據寫入到磁盤中。
從存儲數據的類型上來分,memcache和redis存儲的方式都是鍵值對,只不過redis值的類型比較豐富,有string(字符串),hash(哈希),list(列表),set(集合)zset(有序集合),而memcache主要存儲的是字符串。
12.PHP的基本變量類型
四種標量類型:boolean (布爾型)、integer (整型)、float (浮點型, 也稱做 double)、string (字符串)
兩種複合類型:array (數組)、object (對象)
最後是兩種特殊類型:resource(資源)、NULL(NULL)
13.靜態化如何實現的?僞靜態如何實現?
一、 靜態化指的是頁面靜態化,也即生成實實在在的靜態文件,也即不須要查詢數據庫就能夠直接從文件中獲取數據,指的是真靜態。
實現方式主要有兩種:
一種是咱們在添加信息入庫的時候就生成的靜態文件,也稱爲模板替換技術。
一種是用戶在訪問咱們的頁面時先判斷是否有對應的緩存文件存在,若是存在就讀緩存,不存在就讀數據庫,同時生成緩存文件。
二、僞靜態不是真正意義上的靜態化,之因此使用僞靜態,主要是爲了SEO推廣,搜索引擎對動態的文件獲取難度大,不利於網站的推廣。實習原理是基於Apache或Nginx的rewrite機智
主要有兩種方式:
一種是直接在配置虛擬機的位置配置僞靜態,這個每次修改完成後須要重啓web服務器。
另外一種採用分佈式的,能夠在網站的根目錄上建立.htaccess的文件,在裏面配置相應的重寫規則來實現僞靜態,這種每次重寫時不須要重啓web服務器,且結構上比較清晰。
14.Mysql的讀寫分離?(進階的會遇到)
讀寫分離的實現原理就是在執行SQL語句的時候,判斷究竟是讀操做仍是寫操做,把讀的操做轉向到讀服務器上(從服務器,通常是多臺),寫的操做轉到寫的服務器上(主服務器,通常是一臺,視數據量來看)。固然爲了保證多臺數據庫數據的一致性,須要主從複製。
15.如何處理負載,高併發?
一、HTML靜態化
效率最高、消耗最小的就是純靜態化的html頁面,因此咱們儘量使咱們的 網站上的頁面採用靜態頁面來實現,這個最簡單的方法其實也是最有效的方法。
二、圖片服務器分離
把圖片單獨存儲,儘可能減小圖片等大流量的開銷,能夠放在一些相關的平臺上,如七牛等
三、數據庫集羣和庫表散列及緩存
數據庫的併發鏈接爲100,一臺數據庫遠遠不夠,能夠從讀寫分離、主從複製,數據庫集羣方面來着手。另外儘可能減小數據庫的訪問,可使用緩存數據庫如memcache、redis。
四、鏡像:
儘可能減小下載,能夠把不一樣的請求分發到多個鏡像端。
五、負載均衡:
Apache的最大併發鏈接爲1500,只能增長服務器,能夠從硬件上着手,如F5服務器。固然硬件的成本比較高,咱們每每從軟件方面着手。
16.說一下單引號雙引號?(基礎考點)
單引號內部的變量不會執行, 雙引號會執行
單引號解析速度比雙引號快。
單引號只能解析部分特殊字符,雙引號能夠解析全部特殊字符。
17.PHP7的新特性?重點
標量類型聲明:PHP 7 中的函數的形參類型聲明能夠是標量了。在 PHP 5 中只能是類名、接口、array 或者 callable (PHP 5.4,便可以是函數,包括匿名函數),如今也可使用 string、int、float和 bool 了。
返回值類型聲明:增長了對返回類型聲明的支持。 相似於參數類型聲明,返回類型聲明指明瞭函數返回值的類型。可用的類型與參數聲明中可用的類型相同。
NULL 合併運算符:因爲平常使用中存在大量同時使用三元表達式和 isset()的狀況,NULL 合併運算符使得變量存在且值不爲NULL, 它就會返回自身的值,不然返回它的第二個操做數
use 增強:從同一 namespace 導入的類、函數和常量如今能夠經過單個 use 語句 一次性導入了
匿名類:如今支持經過new class 來實例化一個匿名類
18.PHP 數組排序
sort() - 以升序對數組排序
rsort() - 以降序對數組排序
asort() - 根據值,以升序對關聯數組進行排序
ksort() - 根據鍵,以升序對關聯數組進行排序
arsort() - 根據值,以降序對關聯數組進行排序
krsort() - 根據鍵,以降序對關聯數組進行排序
19.創建索引
20.PHP支持多繼承嗎
不支持。PHP中只容許單繼承,父類能夠被一個子類用關鍵字「extends」繼承。
21.使用過Memcache緩存嗎,若是使用過,可以簡單的描述一下它的工做原理嗎?
Memcahce是把全部的數據保存在內存當中,採用hash表的方式,每條數據又key和value組成,每一個key是獨一無二的,當要訪問某個值的時候先按照找到值,而後返回結果。 Memcahce採用LRU算法來逐漸把過時數據清除掉。