高級PHP(初級架構師)面試題

PHP 篇

GC

  • PHP 7 的內存回收原理?

    請詳細描述ZendMM的工做原理php

  • PHP 7 的垃圾回收和 PHP 5 有什麼區別?

結構

  • PHP 7 中對zVal作了哪些修改?
  • PHP 7 中哪些變量類型在,哪些變量類型在

    變量在棧會有什麼優點?PHP 7是如何讓變量新建在棧的?前端

  • 詳細描述PHPHashMap的結構是如何實現的?
  • 下面代碼中,在PHP 7下, $a$b$c$d 分別指向什麼zVal結構?vue

    $d 被修改的時候,PHP 7 / PHP 5 的內部分別會有哪些操做?git

    $a = 'string';
    $b = &$a;
    $c = &$b;
    $d = $b;
    $d = 'to';
  • JIT 是作了哪些優化,從而對PHP的速度有很多提高?

字符串操做

  • strtrstr_replace 有什麼區別,二者分別用在什麼場景下?

    strtr的程序是如何實現的?算法

  • 字符串在手冊中介紹,「PHP的字符串是二進制安全的」,這句話怎麼理解,爲何是二進制安全?
  • 字符串鏈接符.,在PHP內核中有哪些操做?

    屢次.鏈接,是否會形成內存碎片過多?vuex

多線程

  • PHP中建立多進程有哪些方式?

    互斥信號該如何實現?數據庫

  • Swoole服務端啓動後有哪些進程,這些進程分別是完成什麼工做?
  • 線上環境中,PHP進程偶爾會卡死(或者運行卡頓),請問如何檢測本質問題?

管道

  • Laravel的中間件的順序執行,是如何實現的?
  • 實現管道的makeFn函數安全

    function pipe($input, $list) {
        $fn = makeFn($list); 
        return $fn($input);
    }
    $r = pipe(0, [$a, $b, $c]);
    echo $r;
    
    //$a, $b, $c 相似於
    $a = function($input, $next) {
        $input++;
        $output = $next($input);
        return $output;
    };
    
    function makeFn($list){
        //請實現
    
    }

內存優化

Cli

  • PHP實現一個定時任務器,相似crontab,須要作到前一個任務不論運行時長、運行失敗,都不能影響下一個任務的準點執行?

安全

  • PHP中密碼加密,使用什麼方式加密?

    這種加密的優勢是什麼?服務器

  • RSA AES 加密的區別,分別用於什麼場景下?

反射

  • 實現以下函數(PHP 7)多線程

    echo a(1, 3); //4
    echo a(3)(5); //8
    echo a(1, 2)(3, 4, 5)(6); //21
  • 如何讀取某函數的參數列表,以及參數的默認值。
  • 如何模擬Java的註解方法,好比識別以下代碼中的路由
class Controller {
     /**
      * @Route("/", name="index")
      * @CheckRequest
      */
     public function index(Request $request){
         return 'result';
     }
}
  • 描述下IoCDI)的實現原理?

算法

  • 目前有{} () [] <>四種配對符號,要求寫一個算法檢查相似{([()()]<()>)}是否配對(此字符串是正確的配對),
    好比{([()(])<()>)}便是不合規,由於其中(])() 跨越了]
  • 生成2億個優惠券碼,長度在14位,有效字符是3456789ABCDEFGHJKMNPQRSTUVWXY,其中不含有印刷歧義的0 O 1 I L 2 Z。須要快速生成並能快速驗證是否正確
  • 寫一個最長匹配的替換算法,好比字符串aabcabcabaa應該獲得的結果是1345,最長匹配會這樣分割:aabc abc ab aa

    替換對應關係以下

    ab => 4
    aa => 5
    aabc => 1
    abc => 3

數據庫篇

  • 搭建MySQL分佈式,有哪些方式?
  • MySQL主從同步,和主主同步有哪些區別,以及優劣勢?
  • Laravel中,多態一對多,多對多,數據庫要怎麼設計?

    好比一個關鍵詞表tags,須要關聯用戶、帖子、評論、視頻等表。

  • 描述MySQL的注入原理,以及防止注入有哪些方式?
  • 怎麼解決數據庫中常見的 N+1 效率問題

    好比:

    $users = SELECT * FROM `users` WHERE `gender` = 'male';
    foreach ($users as &$user)
        $user['posts'] = SELECT * FROM `posts` WHERE `user_id` = $user['id'];
  • 哪些狀況下字段容許null,哪些狀況下不容許?
  • MySQL中髒讀應該怎麼處理?

    引伸:好比京東的庫存,0點多人搶購的時候庫存問題?

  • 以下數據庫中會有哪些值

    //請注意是多重嵌套事務
    START TRANSACTION;
      INSERT INTO `users` (`name`) VALUES('a');
      START TRANSACTION;
        INSERT INTO `users` (`name`) VALUES('b');
        START TRANSACTION;
          INSERT INTO `users` (`name`) VALUES('c');
        ROLLBACK;
      COMMIT;
    ROLLBACK;
  • Elasticsearch 如何實現相似SQLWHERE id = 12 AND gender IN ('male', 'unknow');
  • Elasticsearch 如何實現相似SQLGROUP BY nickname, gender
  • Redis 是如何保證執行的原子性的?
  • Redis 在事務中如何作到:發現事務執行過程當中數據被污染就回滾執行?

前端篇

  • 描述XSS注入原理,以及如何防止?
  • 描述Csrf注入原理,以及如何防止?

ES 6

  • ES 6中的 Promise 對象是作什麼的?
  • 解釋ES 6async、await的使用場景?
  • ES 6遍歷器Iterator 怎麼寫,其做用是什麼?

    回調地獄(callback hell) 如何使用 遍歷器Iterator 實現,提示:Thunk

  • 寫出下面代碼執行後輸出的內容

    var p1 = new Promise(resolve => {
        console.log(1);
        resolve(2);
    })
    let p2 = new Promise(resolve => {
        console.log(3);
        resolve(p1);
    });
    p1.then(re => {
        console.log(re);
    });
    p2.then(re => {
        console.log(re);
    });
  • 請簡述JavascriptEvent Loop規範,並描述MacroTask機制和MicroTask機制的區別,以及對應的函數?

Vue

  • vueangularJS 中檢測髒數據的原理有什麼區別?
  • vue中,vuex的主要做用是什麼?
  • vuedatacomputed 有什麼區別?

    {
        computed: {
            now() {
                return new Date();
            }
        }
    }

    上面的now變量,是否可以在每次調用時獲得當前時間?

  • vuexmutationsactions 有什麼區別?
  • vuex中如何在外部(能夠理解爲任意一段<script>中)設置變量的值,以及如何調用mutations

通信協議篇

  • 詳細描述 HTTPSSSL)工做原理?
  • 服務器使用PHP時,客戶端的IP能僞造嗎?若是能,列出僞造方法;若是不能,說明緣由?
  • 描述域名劫持的各類方法,爲何HTTPS不能被劫持?
  • 描述HTTP協議是什麼,以及HTTP 2HTTP 1.1 有什麼區別?
  • 詳細描述IP協議TCP協議,以及UDP協議與它們的區別。
  • TCP協議中,最大傳輸單元MTU通常最大是多少,在TCP協議中,若是一個數據被分割成多個包,這些包結構中什麼字段會被標記相同。
    UDP分包和TCP分包會有哪些區別?
  • HTTP協議Transfer-Encoding: Chunked 適用於哪些應用場景,這個與使用Content-Length: xxx在收到的報文包上有哪些區別?

分佈式篇

  • 描述epollpoll、select的區別,爲何epoll會具有性能優點?
  • 描述下驚羣的緣由?有什麼有效的方法能夠避免驚羣?
  • 什麼是Hash一致性,這個方法主要運用在什麼場景?
    如何實現增長新節點以後,總體作最小的數據移動
  • 有哪些常見分佈式鎖的解決方案,Redis如何完成一個分佈式鎖?
  • ZooKeeper 能解決哪些問題?具體說明。

綜合篇

  • 描述OAuth2的工做原理,繪製出其工做的時序圖?
  • Swoole 中協程實現原理,以及爲何會提高效率?
  • 列出幾個中文分詞工具?
  • git 放棄未提交的文件有哪些方法?
    git刪除遠程分支、Tag有什麼方法?
    git覆蓋遠程倉庫有什麼辦法?
  • CentOS 下安裝php擴展有哪些方法?
相關文章
相關標籤/搜索