成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

初中級PHP面試基礎(chǔ)匯總

B0B0 / 3258人閱讀

摘要:如何實現(xiàn)持久化持久化,將在內(nèi)存中的的狀態(tài)保存到硬盤中,相當(dāng)于備份數(shù)據(jù)庫狀態(tài)持久化,持久化是通過保存服務(wù)器鎖執(zhí)行的寫狀態(tài)來記錄數(shù)據(jù)庫的。

這是我整理的一套面試題,老鐵們看看就當(dāng)復(fù)習(xí)了哦
概述

感覺現(xiàn)在發(fā)面試題有些冷門,就跟昨天德國那場似的,不過看看當(dāng)提前復(fù)習(xí)了。提前備戰(zhàn)。這2個月出門面試的童鞋可注意不要中暑哦。

說幾個你所知道的設(shè)計模式 單例模式
保證一個類僅有一個實例,并提供一個訪問他的全局訪問點例如框架中的數(shù)據(jù)庫連接 - 類似DB類
策略模式
針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,例如進(jìn)入個人主頁時,根據(jù)瀏覽者的不同,給予不同的顯示與操作 - 類似不同用戶呈現(xiàn)不同效果
注冊模式
提供了在程序中有條理的存放并管理一組全局對象 (object) - 類似服務(wù)提供者的注入
適配器模式

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

觀察者模式

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

裝飾器模式

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

迭代器模式

提供一個方法順序訪問一個聚合對象中各個元素,在PHP中將繼承 Iterator 類 - yield

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

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

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

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

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

session與cookie的區(qū)別

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

cookie存儲在客戶端

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

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

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

按值傳遞:函數(shù)內(nèi)對值的內(nèi)容改變對函數(shù)外部無影響
引用傳遞:函數(shù)內(nèi)對值的內(nèi)容改變在函數(shù)外部也會做出相應(yīng)修改

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

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

使用JOIN查詢代替子查詢

使用UNION代替臨時表

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

盡量不使用視圖

分表分庫,讀寫分離

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

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

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

- 垂直拆分:表數(shù)據(jù)拆分到不同表中,按照業(yè)務(wù)拆分
- 水平拆分:行數(shù)據(jù)拆分到不同表中,按照時間、類型、身份等因素拆分表
- 水平垂直聯(lián)合拆分

9.索引建立原則

  - 最左前綴匹配原則
  - 索引列盡量不參與計算
  - 盡量擴(kuò)展索引不要新建索引
面向?qū)ο缶幊痰奈鍌€基本原則 (S.O.L.I.D)

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

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

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

- 對擴(kuò)展開放,對修改閉合

LSP 里氏替換原則

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

ISP 接口隔離原則

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

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

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

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

yield的使用

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

子類重寫父類的protected方法有什么限制?

final修飾的類方法不可被子類重寫

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

重寫時訪問級別只可以等于或者寬松于當(dāng)前重寫方法的訪問級別

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

CGI 是通用網(wǎng)關(guān)接口,用戶WEB服務(wù)器和應(yī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,FastCGI返回給Nginx進(jìn)行輸出,假設(shè)WEB服務(wù)器是NGINX,應(yīng)用程序是PHP,而 php-fpm 是管理FastCGI的,這就是php-fpm,fastCGI與NGINX的關(guān)系.

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

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

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

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

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

XSS,跨站腳本攻擊。
防范

不相信任何輸入,過濾輸入。

基本算法 順序查找
function search($arr,$k){
  $n = count($arr);
    $arr[$n]= $k;
    for($i=0; $i<$n; $i++){
        if($arr[$i]==$k){
        break;
        }
    }
    if ($i<$n){
        return $i;
    }else{
        return -1;
    }
}
二分查找
function binaryRecursive($arr,$low,$top,$target){
        if($low<=$top){
            $mid = floor(($low+$top)/2);
            if($arr[$mid]==$target){
                return $arr[$mid];
            }elseif($arr[$mid]<$target){
                return binaryRecursive($arr,$mid+1,$top,$target);
            }else{
                return binaryRecursive($arr,$low,$top-1,$target);
            }
        }else{
            return -1;
        }
    }
冒泡排序
function _sort($arr)
    {
        $count = count ($arr) - 1;
        $temp  = 0;
        
        for ($i = 0; $i < $count; $i++) {
        
            for ($j = 0; $j < $count - $i; $j++) {
                if ($arr[$j] < $arr[$j + 1]) {
                    $temp        = $arr[$j];
                    $arr[$j]     = $arr[$j + 1];
                    $arr[$j + 1] = $temp;
                }
            }
        }
        
        return $arr;
    }
快速排序
function quick_sort($arr)
{
    //判斷參數(shù)是否是一個數(shù)組
    if(!is_array($arr)) {
        return false;
    }else{
        //遞歸出口:數(shù)組長度為1,直接返回數(shù)組
        $length = count($arr);
        
        if($length<=1) return $arr;
            //數(shù)組元素有多個,則定義兩個空數(shù)組
            $left = $right = array();
            //使用for循環(huán)進(jìn)行遍歷,把第一個元素當(dāng)做比較的對象
            for($i=1; $i<$length; $i++)
            {
                //判斷當(dāng)前元素的大小
                if($arr[$i]<$arr[0]){
                    $left[]=$arr[$i];
                }else{
                    $right[]=$arr[$i];
                }
            }
        //遞歸調(diào)用
        $left=quick_sort($left);
        $right=quick_sort($right);
        //將所有的結(jié)果合并
        return array_merge($left,array($arr[0]),$right);
    }
}
NOSQL Redis、Memecached 這兩者有什么區(qū)別?

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

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

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

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

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

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

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

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

Laravel 設(shè)計原理 服務(wù)提供者是什么?

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

IOC容器是什么?

IOC就是控制反轉(zhuǎn),也被叫做依賴注入(DI),對象A可以依賴對象B,但是控制權(quán)在對象A中,所以叫做控制反轉(zhuǎn),依賴注入則是在IOC容器運行時動態(tài)將某種依賴關(guān)系注入到對象中。
作用:解決代碼難易度,實現(xiàn)低耦合、高擴(kuò)展

Facades 是什么?

提供了一個"static"(靜態(tài))接口去訪問注冊到 IoC 容器中的類。提供了簡單、易記的語法,而無需記住必須手動注入或配置的長長的類名。此外,由于對 PHP 動態(tài)方法的獨特用法,也使測試起來非常容易。

Contract 是什么?

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

架構(gòu) Thrift 實現(xiàn)的基本原理及作用

通過使用RPC通信協(xié)議,實現(xiàn)多語言開發(fā)場景下無感知的互相調(diào)用。
優(yōu)點

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

傳輸效率高

語言之間無障礙

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

硬件方面

軟件方面

禁止外部盜鏈

控制大文件的下載

負(fù)載均衡

分布式

集群

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

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

分布式緩存

TCP 三次握手

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

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

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

第三次握手??蛻舳耸盏交貞?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之外,我們還常聽到的是UDP,那么他倆有啥區(qū)別呢?
TCP對應(yīng)的是可靠性要求高的應(yīng)用,從上面的解釋可以看出來,在真正通信之前要三次握手,是面向連接的;并且TCP利用序列號保證消息的有序性。
而UDP對應(yīng)的則是可靠性要求低,但是流量大、速度快的應(yīng)用;和TCP相比,UDP是無連接的并且可能是無序的。
TCP更重量,UDP更輕量,沒有高低之分,只是應(yīng)用的場景不同。

非技術(shù)問題

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

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

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

非技術(shù)問題沒有正確答案

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28912.html

相關(guān)文章

  • 2018 PHP 面試總結(jié)

    摘要:最近面試了不少公司,正好把記得的問題做個總結(jié)。抽象類的接口的區(qū)別,不在于編程實現(xiàn),而在于程序設(shè)計模式的不同。一般來講,抽象用于不同的事物,而接口用于事物的行為。 最近面試了不少公司,正好把記得的問題做個總結(jié)。 本文 github 會持續(xù)更新 公眾號 搜索 蘇生不惑 或者掃二維碼關(guān)注,每周更新。 showImg(https://segmentfault.com/img/bVbsYyM?w...

    William_Sang 評論0 收藏0
  • 2018 PHP 面試總結(jié)

    摘要:最近面試了不少公司,正好把記得的問題做個總結(jié)。抽象類的接口的區(qū)別,不在于編程實現(xiàn),而在于程序設(shè)計模式的不同。一般來講,抽象用于不同的事物,而接口用于事物的行為。 最近面試了不少公司,正好把記得的問題做個總結(jié)。 本文 github 會持續(xù)更新 公眾號 搜索 蘇生不惑 或者掃二維碼關(guān)注,每周更新。 showImg(https://segmentfault.com/img/bVbsYyM?w...

    lunaticf 評論0 收藏0
  • 整理下《前端江湖面試》對自己有益的題目。

    摘要:面試題目匯總前言近期在找工作,也在讀前端面試江湖這本書,書中整理了很多基礎(chǔ)的面試題目,在書中也發(fā)現(xiàn)了一些錯誤。好記性不如爛筆頭,于是整理下對自己有益的題目,都是一些較為基礎(chǔ)的題目后期還會更新。,返回一個數(shù)組,成員為匹配的字符串。 面試題目匯總 前言 近期在找工作,也在讀 前端面試江湖 這本書,書中整理了很多基礎(chǔ)的面試題目,在書中也發(fā)現(xiàn)了一些錯誤。好記性不如爛筆頭,于是整理下對自己有益的...

    hikui 評論0 收藏0

發(fā)表評論

0條評論

B0B0

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<