2018春招PHP面試總結 | 掘金技術徵文

此次的面試,不只僅但願能開啓一個新的征程,瞭解世界,也是一個發現自身不足的一個過程,藉由此肯定未來的發展(學習)方向的一次機會。php

面試準備

一份能讓面試官瞭解你的簡歷,一份對於本身的自信,就出發吧 html

Mind-map

PHP

php是世界上最好的語言!前端

基礎

  1. session和cookie的區別
Session是在服務端保存的一個數據結構,用來跟蹤用戶的狀態,這個數據能夠保存在集羣、數據庫、文件中

    Cookie是客戶端保存用戶信息的一種機制,用來記錄用戶的一些信息,也是實現Session的一種方式。
複製代碼
  1. PHP7用了嗎,瞭解哪些新特性
PHP7在性能方面實現跨越式的提高,新的操做符,統一變量語法等等

    參考[PHP7的文章](https://blog.csdn.net/u011957758/article/details/73320083)
複製代碼
  1. 魔術變量
問了__dir__表明的含意,這個是回答文件所在的目錄

    參考[PHP 手冊之魔術常量](http://php.net/manual/zh/language.constants.predefined.php)
複製代碼
  1. 魔術方法
這算是常常會問到的一個題目了,經常使用的都記得,突然問到__invoke()就懵了
    __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 

    參考[PHP 手冊之魔術方法](http://www.php.net/manual/zh/language.oop5.magic.php)
複製代碼

數據結構和算法

  1. 棧數據結構
只要能用代碼實現出棧數據結構便可

    參考[棧數據結構文章](http://www.jb51.net/article/130272.htm)
複製代碼
  1. 冒泡排序
只要能用代碼實現出冒泡排序便可

    參考[冒泡排序文章](http://www.jb51.net/article/24497.htm)
複製代碼
  1. 徹底二叉樹和滿二叉樹的區別
只有最下面的兩層結點度可以小於2,而且最下面一層的結點都集中在該層最左邊的若干位置的二叉樹才爲徹底二叉樹
    而一棵深度爲h且有 2^h-1個結點的二叉樹即爲滿二叉樹

    參考[完美二叉樹, 徹底二叉樹和完滿二叉樹](https://blog.csdn.net/HaoDaWang/article/details/78065162)
複製代碼

架構相關

  1. Laravel和ThinkPHP有什麼區別,對於laravel有什麼要吐槽的
我從路由,中間件到控制器,數據訪問,視圖等層面上介紹了不一樣
    吐槽的話可能相對於一些項目,laravel有點‘重’

    參考[tp3.2和tp5,以及laravel的區別](https://blog.csdn.net/qq1690194137/article/details/79794944)
複製代碼
  1. [有用composer發佈過本身的包嗎](基於 Composer 的 PHP 模塊化開發)
我回答沒有,只是瞭解過
    面試官就說他們的框架是本身在Discuz的基礎上二次開發的框架,在他優秀的基礎上把composer依賴管理也都引進blabla

    參考[基於 Composer 的 PHP 模塊化開發](https://zhuanlan.zhihu.com/p/27943241)
複製代碼
  1. 談談對於MVC的理解
結合項目說明模板,視圖,控制器之間的關係和基本的構成

    參考[MVC](https://baike.sogou.com/v25227.htm)
複製代碼

防禦

  1. XSS 跨站腳本攻擊
  2. DDOS 流量攻擊
  3. CSRF 跨站請求僞造攻擊
  4. SQL注入
在前端表單用戶輸入進行控制或限制
    有後端傳參數和數據時進行過濾等等

    參考[常見的 CSRF、XSS、sql注入、DDOS流量攻擊](https://blog.csdn.net/echo_laodong/article/details/79254552)
複製代碼

項目

  1. 在項目中如何解決併發的問題
個人解決辦法先是前端控制有效請求,例如一分鐘才正常請求一次
    接着後端一樣過慮無效請求,接着接操做放進隊列中實現

    有個面試官問,你這個隊列是阻塞的嗎,若是真的同時兩個用戶購買,兩個用戶等待完成,他們仍是用同一個線程完成,有沒有考慮用其它方式實現
    我說無,他就說能夠用鎖的機制,第二個等待第一個完成,一個接一個

    參考[php高併發解決的一點思路](https://blog.csdn.net/mkbug/article/details/71455725)
    相關的還有swoole擴展,能夠了解下
複製代碼
  1. 微信支付具體實現流程
1. H5頁面發起支付請求,請求生成支付訂單
    2. 調用統一下單API,生成預付單
    3. 生成JSAPI頁面調用的支付參數並簽名
    4. 微信瀏覽器自動調起支付JSAPI接口支付
    5. 確認支付
    6. 異步通知商戶支付結果,商戶收到通知返回確認信息
    7. 返回支付結果,展現支付信息給用戶

    參考[微信支付時序圖](https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4)
複製代碼
  1. 簡單實現登陸註冊功能
各個框架考慮的方面不同,這就按本身的理解寫出相應的代碼就好
複製代碼
  1. 如何設計一個商城
我是先給本身限定了一個B2C的商城,而後從數據表開始,接着簡單介紹前端和後端實現邏輯

    參考[PHP網上商城網站的設計與實現](http://www.docin.com/p-190062065.html)
複製代碼

MYSQL

mysql優化基本是重中之重了,尤爲考驗技術mysql

基礎

  1. InnoDB和MyISAM有什麼區別
InnoDB提供事務處理,行級鎖,支持外鍵,支持多種行格式
    MyISAM只支持表級鎖,全文索引,堆表

    參考[MyISAM與InnoDB區別](https://blog.csdn.net/xifeijian/article/details/20316775)
複製代碼
  1. 事務有哪幾個特性
原子性、一致性、隔離性、持久性
複製代碼
  1. 事務的隔離級別
未提交讀、已提交讀、可重複讀、可串行化

    參考[Innodb中的事務隔離級別和鎖的關係](https://tech.meituan.com/innodb-lock.html)
複製代碼
  1. 有個表字段的O_Id,OrderDate,OrderPrice,Customer這幾個,咱們但願查找訂單總金額少於 2000 的客戶
SELECT Customer,SUM(OrderPrice) FROM Orders
    GROUP BY Customer
    HAVING SUM(OrderPrice)<2000
複製代碼
  1. 查詢學生表的數據,大於六十的爲及格,反之不及格
select 分數,類別=Case
    WHEN 分數>=60 THEN '及格'
    ELSE '不及格'
    END
    from 成績表
複製代碼
  1. 查詢沒有學完全部課程的學生學號、姓名
SELECT a.SNO ,a.SNAME  
    FROM student a  
    WHERE a.`SNO` NOT IN  
        ( SELECT b.`SNO` FROM SC b  
        GROUP BY b.`SNO` HAVING COUNT(*) =  
            ( SELECT COUNT(*)  FROM course)
        );  
複製代碼

優化

  1. "select * from student where name='red'","select * from student where name='blue'",優化語句
select name from student where name='red'
    union
    select name from student where name='blue'

    若是用or條件, myisam表能用到索引, innodb不行。 
    innodb用UNION替換OR (適用於索引列) 
複製代碼
  1. 你通常都會怎麼優化數據庫
查詢緩存、EXPLAIN、(聯合)索引、使用固定長度靜態表
    
    這問題都能寫一本書了,參考[MySQL性能優化的最佳21條經驗](https://blog.csdn.net/kaka1121/article/details/53395587)
複製代碼

服務器

防禦

服務器怎麼作防禦nginx

僅開放有限端口,限制登陸IP,限制登陸賬號

    也是能夠定一本書的問題,能夠根據項目回答,參考[服務器防禦知識點彙總](https://blog.csdn.net/Sasoritattoo/article/details/9324149)
複製代碼

協議

Get和Post有什麼區別laravel

Get的參數包含在URL,GET請求會被瀏覽器主動cache,是url編碼,有字符限制參數爲ASCII字符
    Post 經過request body傳遞參數,且有多種編碼方式
複製代碼

NginX

設置nginx時php腳本請求是讓什麼處理git

默認配置的是轉發到FastCGI處理
複製代碼

Redis

  1. 你用redis來緩存什麼數據
跟據項目來講本身緩存的一些常常要用到的數據
複製代碼
  1. Redis怎麼作持久化,配置哪一種刷新頻率
配置aof持久化,用默認的每秒刷新aof文件

    參考[redis 的兩種持久化方式及原理](https://blog.csdn.net/yinxiangbing/article/details/48627997)
複製代碼
  1. Redis是多線程嗎
單線程(我居然回答是多線程,233)

    參考[Redis單進程](http://www.cnblogs.com/syyong/p/6231326.html)
複製代碼
  1. Redis怎麼配置一主多從,要多久
能夠用Redis官方集羣方案,具體沒有實踐過,可能要花幾周時間來完成

    參考[Redis集羣方案](https://www.zhihu.com/question/21419897)
複製代碼

代碼管理

有用過git嗎?當兩我的提交了錯誤代碼後,怎麼解決面試

用過git提交代碼,發生這種狀況能夠先將遠程的代碼git pull到本地,而後將衝突的代碼或Git標記內容修改正確,而後從新提交代碼

    參考[git使用經驗](https://zhuanlan.zhihu.com/p/22666153)
複製代碼

其它

爲何離職

機智回答,稍微提了一下公司或自身的事<del>錢少事多家遠</del>
複製代碼

你理想的團隊

對技術熱情,積極解決問題,共同合做

    參考[某種理想的團隊](https://zhuanlan.zhihu.com/p/19968752)
複製代碼

職業規劃

前端深刻,後端深刻,數據優化分析採集,服務器滲透blabla
複製代碼

想問的問題

通常都會問公司有什麼項目,技術架構,有無盈利等
複製代碼

不一樣公司技術棧不一樣,關心的點也不一樣,有點就會在隊列的問題上問具體阻塞時的解決方案,有的更多關注項目效率,有的還會關注服務器搭建,有無本身搭建框架和對於流行框架的瞭解,過程當中也許就能找到本身想要的發展方向redis

後記

5天9家7offer,感受還行,面試時大多公司都會根據簡歷上的項目進行詳細的提問,. 面試時能看出技術上的廣度(經歷項目或技能多少),和技術的深度(數據優化,框架理解制做,服務器攻防滲透),但願你們也可以隨着項目的發展,不斷實踐學習技術,就醬。 \(•ㅂ•)/♥ 共勉~算法

相關文章
相關標籤/搜索