国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 頭條 PHP常見面試題型總結(jié)(附答案)

PHP常見面試題型總結(jié)(附答案)

Feb 23, 2019 am 11:39 AM
php面試題

這篇文章為大家總結(jié)了一些PHP常見面試題型(附答案),有一定的參考價值,需要的朋友可以參考一下,希望對大家有幫助。

PHP常見面試題型總結(jié)(附答案)

記得我第一次面試PHP這個職位的時候,哪個時候剛從學校出來混,不知道啥行情啊,又是零經(jīng)驗的(這裡插一句,零經(jīng)驗的,如果你從來都沒接觸過開發(fā)一個完整的,或者半成品的項目,公司一般是不會要的,因為公司招你進去,是要你會幫忙做東西,實現(xiàn)公司的業(yè)務與業(yè)績的提升的)。那時候我就直接說試用期800元了,當然,好多年前的了哈!也是相當?shù)偷膬r位的,所以公司直接就要了! ! !道理很簡單,大家都懂的!

【相關(guān)推薦:php面試題(總結(jié))】

在公司裡做項目,成長是一個過程,提升你自己的學習技能更是一個關(guān)鍵所在的。進入公司之前,你會有一兩輪的面試與筆試,做我們這個行業(yè)的都是這樣,所以除了口語表達能力(能吹)之外,還有一點就是實力能力的,這個也是你的面試題所要體現(xiàn)的。面試題的題型很多,但是都是離不開PHP基礎的。一些剛出來的可能不懂試題的。告訴你一個方法,那時候我真的用了!就是把所有題型都背下來了!方法很老套又不切實際。但很有用,因為常見的題型都遇到了~~可能是幸運吧!

可能學習各有各的方法!我以前就是那樣子過來的!現(xiàn)在呢,還是要繼續(xù)的學習與提陞技能,活到老學到老!一旦進坑了,很難出來!

以下推薦一些面試常見的試題,希望對你有用! !

1、冒泡排序,面試前一定要記得!

function maopao($arr)
{
    $len = count($arr);
    $n = count($arr) - 1;
    for ($i = 0; $i < $len; $i++) {
        for ($j = 0; $j < $n; $j++) {
            if ($arr[$j] > $arr[$j + 1]) {
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j + 1];
                $arr[$j + 1] = $tmp;
            }
        }
    }
    return $arr;
}

2、快速排序,面試前一定要記得!

function quick_sort($array) {
    if (count($array) <= 1) return $array;
    $key = $array[0];
    $left_arr = array();
    $right_arr = array();
    for ($i=1; $i<count($array); $i++){
        if ($array[$i] <= $key)
            $left_arr[] = $array[$i];
        else
            $right_arr[] = $array[$i];
    }
    $left_arr = quick_sort($left_arr);
    $right_arr = quick_sort($right_arr);
    return array_merge($left_arr, array($key), $right_arr);
}

3、請說明PHP 中傳值與傳引用的區(qū)別,什麼時候傳值什麼時候傳引用?

按值傳遞:函數(shù)範圍內(nèi)對值的任何改變在函數(shù)外部都會被忽略

按引用傳遞:函數(shù)範圍內(nèi)對值的任何改變在函數(shù)外部也能反映出這些修改

優(yōu)缺點:按值傳遞時,php必須複製值。特別是對於大型的字串和物件來說,這將會是一個代價很大的操作。按引用傳遞則不需要複製值,對於效能提升很有好處。 (優(yōu)缺點會考到)

4、MySQL資料庫中的欄位型別varchar和char的主要差異是什麼?

##Varchar是變長,節(jié)省儲存空間,char是固定長度。找出效率要char型快,因為varchar是非定長,必須先找長度,然後進行資料的擷取,比char定長型別多了一個步驟,所以效率低一些。

5、MySQL資料庫的常用儲存引擎以及它們的差異?

MyISAM:不支援事務,表鎖,易產(chǎn)生碎片,要經(jīng)常優(yōu)化,讀寫速度較快,支援全文索引。

InnoDB:支援事務,行鎖,有崩潰復原能力。讀寫速度比MyISAM慢,5.6之後支援全文索引。

儲存引擎是基於表格的,而不是資料庫

(這題還能更詳細點就詳細點)

6、對於大流量的網(wǎng)站,採用什麼樣的方法來解決訪問量問題?

首先,確認伺服器硬體是否足夠支援目前的流量

其次,優(yōu)化資料庫存取。

第三,禁止外部的盜鏈。

第四,控制大檔案的下載。

第五,使用不同主機分流主要流量

第六,使用流量分析統(tǒng)計軟體

第七,盡量使用靜態(tài)頁,快取

7、什麼是物件導向?主要特徵是什麼?

物件導向是程式的一種設計方式,它利於提高程式的重複使用性,使程式結(jié)構(gòu)更加清晰。主要特徵:封裝、繼承、多型。

8、SESSION 與 COOKIE的差別是什麼?這是重點

SESSION儲存在伺服器端,COOKIE保存在客戶端。 Session比較安全,cookie用某些手段可以修改,不安全。 Session依賴cookie進行傳遞。停用cookie後,session還可以使用,在儲存session的檔案中,產(chǎn)生sessionID,透過get傳參的方式將sessionID傳到要實現(xiàn)session共享的頁面,讀取sessionID,從而從session中取得資料。

建議查找session與cookie這方面的詳細教學

9、對快取技術(shù)的了解? redis是個考點

1、快取技術(shù)是將動態(tài)內(nèi)容快取到文件中,在一定時間內(nèi)存取動態(tài)頁面直接呼叫快取文件,而不必重新存取資料庫。

2、使用memcache可以做快取。

10、表單中g(shù)et和post提交方式的區(qū)別

get是明確的,資料從url中可以看到,傳輸?shù)馁Y料量小,安全性低;

post是隱式的,傳送的資料量較大,安全性較高

##11、最佳化資料庫的方法

選取最適用的欄位屬性,盡可能減少定義欄位寬度,盡量把欄位設定NOTNULL

使用連接(JOIN)來取代子查詢

適用聯(lián)合(UNION)來取代手動建立的暫存資料表

交易處理

鎖定表、最佳化交易處理

#使用外鍵,最佳化鎖定表

使用索引

優(yōu)化查詢語句

12、語句include和require的差別是什麼?語句include和require的差別是什麼?

require是無條件包含,也就是如果一個流程裡加入require,無論條件成立與否都會先執(zhí)行require,當檔案不存在或無法開啟的時候,會提示錯誤,並且會終止程式執(zhí)行

include有回傳值,而require沒有(可能因為如此require的速度比include快),如果被包含的檔案不存在的化,那麼會提示一個錯誤,但是程式會繼續(xù)執(zhí)行下去

13、redis和memcacahe、mongoDB的差別?

都是非關(guān)係型資料庫,效能都非常高,但是mongoDB和memcache、redis是不同的兩種型別。後兩者主要用於資料的緩存,前者主要用在查詢和儲存大數(shù)據(jù)方面,是最接近資料庫的文檔型的非關(guān)聯(lián)式資料庫。

從資料儲存位置上來分,memcache的資料存在記憶體中,而redis既可以儲存在記憶體中,也可以儲存的到磁碟中,達到持久化儲存的功能,memcache一旦斷電,數(shù)據(jù)全部遺失,redis可以利用快照和AOF把資料存到磁碟中,當恢復時又從磁碟讀取到記憶體中,當物理記憶體使用完畢後,可以把資料寫入磁碟中。

從儲存資料的類型上來分,memcache和redis儲存的方式都是鍵值對,只不過redis值的類型比較豐富,有string(字串),hash(哈希),list(列表),set(集合)zset(有序集合),而memcache主要儲存的是字串。

14、PHP的基本變數(shù)類型

# 四種標量類型:boolean (布林類型)、integer (整數(shù))、float (浮點型, 也稱為double)、string (字串)

兩種複合型別:array (陣列)、object (物件)

最後是兩種特殊型別:resource(資源)、NULL(NULL)

15、靜態(tài)化如何實現(xiàn)的?偽靜態(tài)如何實作?

1、 靜態(tài)化指的是頁面靜態(tài)化,也即產(chǎn)生實實在在的靜態(tài)文件,也即不需要查詢資料庫就可以直接從文件中獲取數(shù)據(jù),指的是真靜態(tài)。

實作方式主要有兩種:

一種是我們在新增資訊入庫的時候就產(chǎn)生的靜態(tài)文件,也稱為模板替換技術(shù)。

一種是使用者在造訪我們的頁面時先判斷是否有對應的快取檔案存在,如果存在就讀緩存,不存在就讀資料庫,同時產(chǎn)生快取檔案。

2、偽靜態(tài)不是真正意義上的靜態(tài)化,之所以使用偽靜態(tài),主要是為了SEO推廣,搜索引擎對動態(tài)的文件獲取難度大,不利于網(wǎng)站的推廣。實習原理是基于Apache或Nginx的rewrite機智
主要有兩種方式:

一種是直接在配置虛擬機的位置配置偽靜態(tài),這個每次修改完成后需要重啟web服務器。

另一種采用分布式的,可以在網(wǎng)站的根目錄上創(chuàng)建.htaccess的文件,在里面配置相應的重寫規(guī)則來實現(xiàn)偽靜態(tài),這種每次重寫時不需要重啟web服務器,且結(jié)構(gòu)上比較清晰。

16、Mysql的讀寫分離?(進階的會遇到)

讀寫分離的實現(xiàn)原理就是在執(zhí)行SQL語句的時候,判斷到底是讀操作還是寫操作,把讀的操作轉(zhuǎn)向到讀服務器上(從服務器,一般是多臺),寫的操作轉(zhuǎn)到寫的服務器上(主服務器,一般是一臺,視數(shù)據(jù)量來看)。當然為了保證多臺數(shù)據(jù)庫數(shù)據(jù)的一致性,需要主從復制。

17、如何處理負載,高并發(fā)?

1、HTML靜態(tài)化
效率最高、消耗最小的就是純靜態(tài)化的html頁面,所以我們盡可能使我們的 網(wǎng)站上的頁面采用靜態(tài)頁面來實現(xiàn),這個最簡單的方法其實也是最有效的方法。
2、圖片服務器分離
把圖片單獨存儲,盡量減少圖片等大流量的開銷,可以放在一些相關(guān)的平臺上,如七牛等
3、數(shù)據(jù)庫集群和庫表散列及緩存
數(shù)據(jù)庫的并發(fā)連接為100,一臺數(shù)據(jù)庫遠遠不夠,可以從讀寫分離、主從復制,數(shù)據(jù)庫集群方面來著手。另外盡量減少數(shù)據(jù)庫的訪問,可以使用緩存數(shù)據(jù)庫如memcache、redis。
4、鏡像:
盡量減少下載,可以把不同的請求分發(fā)到多個鏡像端。
5、負載均衡:
Apache的最大并發(fā)連接為1500,只能增加服務器,可以從硬件上著手,如F5服務器。當然硬件的成本比較高,我們往往從軟件方面著手。

18、說一下單引號雙引號?(基礎考點)

單引號內(nèi)部的變量不會執(zhí)行, 雙引號會執(zhí)行

單引號解析速度比雙引號快。

單引號只能解析部分特殊字符,雙引號可以解析所有特殊字符。

19、PHP7的新特性?重點

標量類型聲明:PHP 7 中的函數(shù)的形參類型聲明可以是標量了。在 PHP 5 中只能是類名、接口、array 或者 callable (PHP 5.4,即可以是函數(shù),包括匿名函數(shù)),現(xiàn)在也可以使用 string、int、float和 bool 了。

返回值類型聲明:增加了對返回類型聲明的支持。 類似于參數(shù)類型聲明,返回類型聲明指明了函數(shù)返回值的類型??捎玫念愋团c參數(shù)聲明中可用的類型相同。

NULL 合并運算符:由于日常使用中存在大量同時使用三元表達式和 isset()的情況,NULL 合并運算符使得變量存在且值不為NULL, 它就會返回自身的值,否則返回它的第二個操作數(shù)。

use 加強:從同一 namespace 導入的類、函數(shù)和常量現(xiàn)在可以通過單個 use 語句 一次性導入了

匿名類:現(xiàn)在支持通過new class 來實例化一個匿名類

20、PHP 數(shù)組排序

sort() - 以升序?qū)?shù)組排序

rsort() - 以降序?qū)?shù)組排序

asort() - 根據(jù)值,以升序?qū)﹃P(guān)聯(lián)數(shù)組進行排序

ksort() - 根據(jù)鍵,以升序?qū)﹃P(guān)聯(lián)數(shù)組進行排序

arsort() - 根據(jù)值,以降序?qū)﹃P(guān)聯(lián)數(shù)組進行排序

krsort() - 根據(jù)鍵,以降序?qū)﹃P(guān)聯(lián)數(shù)組進行排序

21、建立索引

(普通索引)->
創(chuàng)建:CREATE INDEX <索引名> ON tablename (索引字段)
修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)
創(chuàng)表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段))
(唯一索引)->
創(chuàng)建:CREATE UNIQUE <索引名> ON tablename (索引字段)
修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)
創(chuàng)表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段))
(主鍵)->
它是唯一索引,一般在創(chuàng)建表是建立,格式為:
CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])

22、PHP支持多繼承嗎?

不支持。PHP中只允許單繼承,父類可以被一個子類用關(guān)鍵字“extends”繼承。

23、使用過Memcache緩存嗎,如果使用過,能夠簡單的描述一下它的工作原理嗎?

Memcahce是把所有的數(shù)據(jù)保存在內(nèi)存當中,采用hash表的方式,每條數(shù)據(jù)又key和value組成,每個key是獨一無二的,當要訪問某個值的時候先按照找到值,然后返回結(jié)果。
Memcahce采用LRU算法來逐漸把過期數(shù)據(jù)清除掉。

24、優(yōu)化MYSQL數(shù)據(jù)庫的方法

(1)選擇最有效率的表名順序
(2)WHERE子句中的連接順序
(3)SELECT子句中避免使用‘*’
(4)用Where子句替換HAVING子句
(5)通過內(nèi)部函數(shù)提高SQL效率
(6)避免在索引列上使用計算。
(7)提高GROUP BY 語句的效率, 可以通過將不需要的記錄在GROUP BY 之前過濾掉。

(1).選取最適用的字段屬性,應該盡量把字段設置為NOT NULL
(2).使用連接(JOIN)來代替子查詢(Sub-Queries)
(3).使用聯(lián)合(UNION)來代替手動創(chuàng)建的臨時表
(4).盡量少使用 LIKE 關(guān)鍵字和通配符
(5).使用事務和外鍵

25、MySQL主從備份的原理?

mysql支持單向、異步復制,復制過程中一個服務器充當主服務器,而一個或多個其它服務器充當從服務器。

26、error_reporting() 的作用?

設置 PHP 的報錯級別并返回當前級別。

27、如何修改session的生存時間

在php.ini 中設置 session.gc_maxlifetime = 1440 //默認時間

代碼實現(xiàn)

$lifeTime = 24 * 3600;  // 保存一天 
session_set_cookie_params($lifeTime); 
session_start();

28、常見的 PHP 安全性攻擊

SQL注入:用戶利用在表單字段輸入SQL語句的方式來影響正常的SQL執(zhí)行。
防止

使用mysql_real_escape_string()過濾數(shù)據(jù)

手動檢查每一數(shù)據(jù)是否為正確的數(shù)據(jù)類型

使用預處理語句并綁定變量

參數(shù)化SQL:是指在設計與數(shù)據(jù)庫鏈接并訪問數(shù)據(jù)時,在需要填入數(shù)值或數(shù)據(jù)的地方,使用參數(shù) (Parameter) 來給值,用@或?來表示參數(shù)。

XSS攻擊 :跨站點腳本攻擊,由用戶輸入一些數(shù)據(jù)到你的網(wǎng)站,其中包括客戶端腳本(通常JavaScript)。如果你沒有過濾就輸出數(shù)據(jù)到另一個web頁面,這個腳本將被執(zhí)行。
防止:為了防止XSS攻擊,使用PHP的htmlentities()函數(shù)過濾再輸出到瀏覽器。

CSRF:跨站點請求偽造,是指一個頁面發(fā)出的請求,看起來就像是網(wǎng)站的信任用戶,但是是偽造的
防止:一般來說,確保用戶來自你的表單,並且匹配每一個你發(fā)送出去的表單。有兩點一定要記?。?/p>

對使用者會話採用適當?shù)陌踩胧?,例?給每一個會話更新id和使用者使用SSL。

產(chǎn)生另一個一次性的令牌並將其嵌入表單,保存在會話中(一個會話變數(shù)),在提交時檢查它。如laravel中的 _token

程式碼注入:程式碼注入是利用電腦漏洞透過處理無效資料所造成的。問題出在,當你不小心執(zhí)行任意程式碼,通常透過檔案包含。寫得很糟糕的程式碼可以允許一個遠端檔案包含並執(zhí)行。如許多PHP函數(shù),如require可以包含URL或檔名。
防止程式碼注入

過濾使用者輸入

在php.ini設定停用allow_url_fopen和allow_url_include。這將禁用require/include/fopen的遠端檔案

題型還有很多,希望大家在學習過程中,慢慢的去發(fā)現(xiàn)和慢慢的提升自己的學習技能,最後祝大家學習愉快! !

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)