欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂為你總結(jié)2018年P(guān)HP開(kāi)發(fā)程序員面試題匯總

2018-08-13 11:41:53 1119瀏覽

這是小編整理的一套面試題,參加PHP培訓(xùn)的同學(xué)看看就當(dāng)復(fù)習(xí)了哦。



概述


感覺(jué)現(xiàn)在發(fā)面試題有些冷門(mén),不過(guò)看看當(dāng)提前復(fù)習(xí)了。提前備戰(zhàn)。這2個(gè)月出門(mén)面試的童鞋可注意不要中暑哦。

說(shuō)幾個(gè)你所知道的設(shè)計(jì)模式

單例模式

保證一個(gè)類(lèi)僅有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)他的全局訪問(wèn)點(diǎn),例如框架中的數(shù)據(jù)庫(kù)連接——類(lèi)似DB類(lèi)。

策略模式

針對(duì)一組算法,將每一個(gè)算法封裝到具有共同接口的獨(dú)立的類(lèi)中,例如進(jìn)入個(gè)人主頁(yè)時(shí),根據(jù)瀏覽者的不同,給予不同的顯示與操作——類(lèi)似不同用戶(hù)呈現(xiàn)不同效果。

注冊(cè)模式

提供了在程序中有條理的存放并管理一組全局對(duì)象(object)——類(lèi)似服務(wù)提供者的注入。

適配器模式

將不同接口適配成統(tǒng)一的API接口,例如數(shù)據(jù)操作有mysql、mysqli、pdo等,可利用適配器模式統(tǒng)一接口。

觀察者模式

一個(gè)對(duì)象通過(guò)添加一個(gè)方法使本身變得可觀察。當(dāng)可觀察的對(duì)象更改時(shí),它會(huì)將消息發(fā)送到已注冊(cè)的觀察者。例如實(shí)現(xiàn)實(shí)現(xiàn)消息推送——將所有類(lèi)的實(shí)例化注冊(cè)到一個(gè)數(shù)組,通過(guò)循環(huán)批量執(zhí)行類(lèi)。

裝飾器模式

不修改原類(lèi)代碼和繼承的情況下動(dòng)態(tài)擴(kuò)展類(lèi)的功能,例如框架的每個(gè)Controller文件會(huì)提供before和after方法——在某個(gè)方法或輸出之前執(zhí)行或之后執(zhí)行,用于修飾。

迭代器模式

提供一個(gè)方法順序訪問(wèn)一個(gè)聚合對(duì)象中各個(gè)元素,在PHP中將繼承Iterator類(lèi)——yield。

POST和GET有什么區(qū)別?

GET是從服務(wù)器上獲取數(shù)據(jù),POST是向服務(wù)器傳送數(shù)據(jù)

GET是通過(guò)發(fā)送HTTP協(xié)議通過(guò)URl參數(shù)傳遞進(jìn)行接收,而POST是實(shí)體數(shù)據(jù),通過(guò)表單提交

GET傳送的數(shù)據(jù)量較小,不能大于2KB。POST傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制

GET安全性非常低,POST安全性較高

session與cookie的區(qū)別

session存儲(chǔ)在服務(wù)器上的php指定目錄中(session_dir)的位置

cookie存儲(chǔ)在客戶(hù)端

數(shù)據(jù)庫(kù)中的事務(wù)是什么?

指作為一個(gè)單元的一組有序的數(shù)據(jù)庫(kù)操作,如果組中的所有操作都成功,則認(rèn)為事務(wù)成功,即使有一個(gè)操作失敗。事務(wù)也不成功,如果所有操作完成,事務(wù)提交,其修改將作用于所有其他數(shù)據(jù)庫(kù)進(jìn)程,如果有一個(gè)操作失敗,則事務(wù)回滾,該事務(wù)影響到的操作都會(huì)取消。

PHP中傳引用與傳值的區(qū)別?

按值傳遞:函數(shù)內(nèi)對(duì)值的內(nèi)容改變對(duì)函數(shù)外部無(wú)影響。

引用傳遞:函數(shù)內(nèi)對(duì)值的內(nèi)容改變?cè)诤瘮?shù)外部也會(huì)做出相應(yīng)修改。

MYSQL優(yōu)化方案有哪些?

選用適合的字段類(lèi)型,避免數(shù)據(jù)庫(kù)增加不必要的空間,字段盡量設(shè)定為NOTNULL,類(lèi)似性別,省份盡量使用枚舉類(lèi)型ENUM

使用JOIN查詢(xún)代替子查詢(xún)

使用UNION代替臨時(shí)表

盡量不使用外鍵、除非必須保持?jǐn)?shù)據(jù)表與表之間的一致性、完整性

盡量不使用視圖

分表分庫(kù),讀寫(xiě)分離

合理設(shè)置主鍵及索引

索引分為:普通索引、唯一索引、全文索引、主鍵(也是一種唯一索引)

后期演變的數(shù)據(jù)表優(yōu)化

垂直拆分:表數(shù)據(jù)拆分到不同表中,按照業(yè)務(wù)拆分

水平拆分:行數(shù)據(jù)拆分到不同表中,按照時(shí)間、類(lèi)型、身份等因素拆分表

水平垂直聯(lián)合拆分9.索引建立原則

最左前綴匹配原則

索引列盡量不參與計(jì)算

盡量擴(kuò)展索引不要新建索引

面向?qū)ο缶幊痰奈鍌€(gè)基本原則(S.O.L.I.D)

SRP單一功能原則(你可以這樣干,并不是說(shuō)你應(yīng)該這樣干)

引起類(lèi)變化的因素永遠(yuǎn)不要多余一個(gè),保證類(lèi)的有且只有一個(gè)責(zé)任

OCP開(kāi)閉原則(開(kāi)胸手術(shù)時(shí)不需要穿一件外套)

對(duì)擴(kuò)展開(kāi)放,對(duì)修改閉合

LSP里氏替換原則

當(dāng)一個(gè)子類(lèi)的實(shí)例應(yīng)該能夠替換任何其父類(lèi)的實(shí)例時(shí),它們之間才具有IS-A關(guān)系

ISP接口隔離原則

不要強(qiáng)迫客戶(hù)端(泛指調(diào)用者)去依賴(lài)那些他們不使用的接口

DIP依賴(lài)反轉(zhuǎn)原則

高層模塊不應(yīng)該依賴(lài)底層模塊,兩者都應(yīng)該依賴(lài)其抽象

抽象不應(yīng)該依賴(lài)于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴(lài)于抽象

yield的使用

生成器提供了一種更容易的方法來(lái)實(shí)現(xiàn)簡(jiǎn)單的對(duì)象迭代,相比較定義類(lèi)實(shí)現(xiàn)Iterator接口的方式,性能開(kāi)銷(xiāo)和復(fù)雜性大大降低。

子類(lèi)重寫(xiě)父類(lèi)的protected方法有什么限制?

final修飾的類(lèi)方法不可被子類(lèi)重寫(xiě)

5.3以后方法參數(shù)個(gè)數(shù)必須一致

重寫(xiě)時(shí)訪問(wèn)級(jí)別只可以等于或者寬松于當(dāng)前重寫(xiě)方法的訪問(wèn)級(jí)別

什么是CGI?什么是FastCGI?php-fpm,FastCGI,Nginx之間是什么關(guān)系?

CGI是通用網(wǎng)關(guān)接口,用戶(hù)WEB服務(wù)器和應(yīng)用程序間的交互,定義輸入輸出規(guī)范,用戶(hù)的請(qǐng)求通過(guò)WEB服務(wù)器轉(zhuǎn)發(fā)給FastCGI進(jìn)程,F(xiàn)astCGI進(jìn)程再調(diào)用應(yīng)用程式進(jìn)行處理,如PHP解析器,應(yīng)用程序的處理結(jié)果如HTML返回給FastCGI,F(xiàn)astCGI返回給Nginx進(jìn)行輸出,假設(shè)WEB服務(wù)器是NGINX,應(yīng)用程序是PHP,而php-fpm是管理FastCGI的,這就是php-fpm,fastCGI與NGINX的關(guān)系。

FastCGI用來(lái)提高cgi程序性能,啟動(dòng)一個(gè)master,再啟動(dòng)多個(gè)worker,不需要每次解析php.ini而php-fpm實(shí)現(xiàn)了fastcgi協(xié)議,是fastcgi的進(jìn)程管理器,支持平滑重啟可以啟動(dòng)的時(shí)候預(yù)先生成多個(gè)進(jìn)程。

什么是CSRF攻擊?XSS攻擊?如何防范?

CSRF,跨站請(qǐng)求偽造,攻擊方偽裝用戶(hù)身份發(fā)送請(qǐng)求從而竊取信息或者破壞系統(tǒng)。防范:

合理規(guī)范api請(qǐng)求方式,GET,POST

對(duì)POST請(qǐng)求加token令牌驗(yàn)證,生成一個(gè)隨機(jī)碼并存入session,表單中帶上這個(gè)隨機(jī)碼,提交的時(shí)候服務(wù)端進(jìn)行驗(yàn)證隨機(jī)碼是否相同。

XSS,跨站腳本攻擊。防范:不相信任何輸入,過(guò)濾輸入。

Redis、Memecached這兩者有什么區(qū)別?

Redis支持更加豐富的數(shù)據(jù)存儲(chǔ)類(lèi)型,String、Hash、List、Set和SortedSet。Memcached僅支持簡(jiǎn)單的key-value結(jié)構(gòu)

Memcachedkey-value存儲(chǔ)比Redis采用hash結(jié)構(gòu)來(lái)做key-value存儲(chǔ)的內(nèi)存利用率更高

Redis提供了事務(wù)的功能,可以保證一系列命令的原子性

Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤(pán)中

Redis只使用單核,而Memcached可以使用多核,所以平均每一個(gè)核上Redis在存儲(chǔ)小數(shù)據(jù)時(shí)比Memcached性能更高

Redis如何實(shí)現(xiàn)持久化?

RDB持久化

將redis在內(nèi)存中的的狀態(tài)保存到硬盤(pán)中,相當(dāng)于備份數(shù)據(jù)庫(kù)狀態(tài)。

AOF持久化(Append-Only-File)

AOF持久化是通過(guò)保存Redis服務(wù)器鎖執(zhí)行的寫(xiě)狀態(tài)來(lái)記錄數(shù)據(jù)庫(kù)的。相當(dāng)于備份數(shù)據(jù)庫(kù)接收到的命令,所有被寫(xiě)入AOF的命令都是以redis的協(xié)議格式來(lái)保存的。

Laravel設(shè)計(jì)原理

服務(wù)提供者是什么?

服務(wù)提供者是所有Laravel應(yīng)用程序引導(dǎo)啟動(dòng)的中心,Laravel的核心服務(wù)器、注冊(cè)服務(wù)、綁定服務(wù)、監(jiān)聽(tīng)器、中間件、路由注冊(cè)以及我們應(yīng)用程序都是由服務(wù)提供者引導(dǎo)啟動(dòng)的。

IOC容器是什么?

IOC就是控制反轉(zhuǎn),也被叫做依賴(lài)注入(DI),對(duì)象A可以依賴(lài)對(duì)象B,但是控制權(quán)在對(duì)象A中,所以叫做控制反轉(zhuǎn),依賴(lài)注入則是在IOC容器運(yùn)行時(shí)動(dòng)態(tài)將某種依賴(lài)關(guān)系注入到對(duì)象中。

作用:解決代碼難易度,實(shí)現(xiàn)低耦合、高擴(kuò)展。

Facades是什么?

提供了一個(gè)"static"(靜態(tài))接口去訪問(wèn)注冊(cè)到IoC容器中的類(lèi)。提供了簡(jiǎn)單、易記的語(yǔ)法,而無(wú)需記住必須手動(dòng)注入或配置的長(zhǎng)長(zhǎng)的類(lèi)名。此外,由于對(duì)PHP動(dòng)態(tài)方法的獨(dú)特用法,也使測(cè)試起來(lái)非常容易。

Contract是什么?

Contract(契約)是Laravel定義框架提供的核心服務(wù)的接口。Contract和Facades并沒(méi)有本質(zhì)意義上的區(qū)別,其作用就是使接口低耦合、更簡(jiǎn)單。

架構(gòu)

Thrift實(shí)現(xiàn)的基本原理及作用

通過(guò)使用RPC通信協(xié)議,實(shí)現(xiàn)多語(yǔ)言開(kāi)發(fā)場(chǎng)景下無(wú)感知的互相調(diào)用。

優(yōu)點(diǎn):

數(shù)據(jù)包呈二進(jìn)制發(fā)送,流量消耗小

傳輸效率高

語(yǔ)言之間無(wú)障礙

如何解決優(yōu)化網(wǎng)站\App大數(shù)據(jù)大流量高并發(fā)

硬件方面

軟件方面

禁止外部盜鏈

控制大文件的下載

負(fù)載均衡

分布式

集群

主從數(shù)據(jù)庫(kù)

分布式數(shù)據(jù)庫(kù)

分布式緩存

TCP三次握手

三次握手就是客戶(hù)端與服務(wù)器端建立TCP連接時(shí)需要發(fā)送3個(gè)包進(jìn)行連接的確認(rèn),在三次握手完成后即可建立連接。第一次握手

客戶(hù)端發(fā)送請(qǐng)求報(bào)文,標(biāo)志位SYN設(shè)置為1,隨機(jī)產(chǎn)生seq值為x,客戶(hù)端進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器端的回應(yīng)。

第二次握手

服務(wù)器端接收到請(qǐng)求報(bào)文,將SYN和ACK都設(shè)置為1,ack為x+1,隨機(jī)產(chǎn)生seq值為y,然后將數(shù)據(jù)包發(fā)送給客戶(hù)端進(jìn)行確認(rèn),服務(wù)器端進(jìn)入SYN_RCVD狀態(tài)。

第三次握手

客戶(hù)端收到回應(yīng)的數(shù)據(jù)包后,確認(rèn)ack是否為x+1,以及ACK是否為1,若正確,則將ACK設(shè)置為1,ack為y+1,然后將數(shù)據(jù)發(fā)送給服務(wù)器端。服務(wù)器端在接受到數(shù)據(jù)后檢查ack是否為y+1,ACK是否為1,若正確則正確建立連接,雙方均進(jìn)入ESTAB-LISHED狀態(tài),完成三次握手。

TCP與UDP的區(qū)別

除了TCP之外,我們還常聽(tīng)到的是UDP,那么他倆有啥區(qū)別呢?

TCP對(duì)應(yīng)的是可靠性要求高的應(yīng)用,從上面的解釋可以看出來(lái),在真正通信之前要三次握手,是面向連接的;并且TCP利用序列號(hào)保證消息的有序性。而UDP對(duì)應(yīng)的則是可靠性要求低,但是流量大、速度快的應(yīng)用;和TCP相比,UDP是無(wú)連接的并且可能是無(wú)序的。

TCP更重量,UDP更輕量,沒(méi)有高低之分,只是應(yīng)用的場(chǎng)景不同。

非技術(shù)問(wèn)題

為什么要在上家公司離職?

未來(lái)三年的職業(yè)規(guī)劃的怎樣的?

您這邊有什么要理解的嗎?

非技術(shù)問(wèn)題沒(méi)有正確答案。

以上就是扣丁學(xué)堂PHP培訓(xùn)小編給大家分享的文章,希望對(duì)小伙伴們有所幫助,想要了解更多關(guān)于PHP開(kāi)發(fā)方面內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢(xún)??鄱W(xué)堂不僅有專(zhuān)業(yè)的PHP培訓(xùn)班供大家學(xué)習(xí),還有與時(shí)俱進(jìn)的課程體系和大量的PHP在線視頻教程讓學(xué)員免費(fèi)觀看學(xué)習(xí),想要快速學(xué)習(xí)PHP開(kāi)發(fā)就到由專(zhuān)業(yè)老師授課的扣丁學(xué)堂學(xué)習(xí)吧??鄱W(xué)堂PHP技術(shù)交流群:374332265。


【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】

 

 

查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>


標(biāo)簽:

熱門(mén)專(zhuān)區(qū)

暫無(wú)熱門(mén)資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢(xún)熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部