前言:有收穫的話請加顆小星星,沒有收穫的話能夠 反對 沒有幫助 舉報三連php
有心的同窗應該會看到我這個noteBook下面的其它知識,但願對大家有些許幫助。html
本文地址前端
時間點:2017-11java
<!-- TOC -->mysql
一個16年畢業生所經歷的php面試react
<!-- /TOC -->
說到面試,仍是先說你爲何要離職,
關鍵字:成長、發展、委屈、領導、錢(工資)突發感想是否是能夠抓取下而後分析關鍵字,哈哈哈
還有
還想看嗎
個人理解:面試不是高考,高考只有一次(不說補習),面試能夠有n次,只要有面試機會,你就能夠一直去面,面到吐爲止都不要緊,不要怕失敗,
公司沒選擇你不是你不優秀,而是你不符合他們的要求,回家思考下面試不足的地方,調整下心態,準備下個面試纔是你正確的作法。
準備是多方面的,俗話說:成功只留給有準備的人
你是牛人嗎 ?
不用準備,等獵頭挖 :
老老實實的隨時準備好
兩面
我說了mysql的四個特性,原子性、一致性、隔離性、持久性,事務能夠理解成一次操做要不完成要不失敗。 面試官問了隔離性和鎖的問題,有點忘了,這個真沒答上來 ------------- 能夠參考下《Innodb中的事務隔離級別和鎖的關係》https://tech.meituan.com/innodb-lock.html
我說了經過zend引擎解析成opcode,而後轉化成機器識別的代碼。 平時確實沒有去關注這個,失敗失敗,查了資料 鳥哥寫的《深刻理解PHP原理之Opcodes》http://www.laruence.com/2008/06/18/221.html
我沒答上來,本身後面查的 ------------- 參考:http://blog.csdn.net/iqzq123/article/details/8877645
我說了經過redis存儲session,以達到共享目的,後面查了下方案,還挺多的 ------------- 參考:http://www.cnblogs.com/wangtao_20/p/3395518.html#commentform
我寫了master做爲主分支,dev做爲開發分支,bug_fix分支做爲bug分支 面試官說有個臨時bug須要改,而咱們在dev上已經開發了不少內容了,我答的是用bug_fix分支拉master代碼, 再合回去,面試官說dev怎麼辦,改了相同的模塊會衝突想了下,確實會,而後求教面試官, 面試官說能夠用git rebase變基實現,本身見過這個命令,可是沒用過,尷尬
我說了get、post、put、patch、delete,面試官問他們分別怎麼用,畢竟本身作api的 就回答了get是從服務器取資源、post是新建資源、put是 更新完整資源、patch更新部分資源、delete是刪除資源,就過了
有點忘了,我答的不是很好,問的是有如下幾個需求,請問須要建幾張表,爲何?主要考的如何合理的設計表, 好比用戶登陸信息表能夠怎樣設計?發帖表和回帖表須要怎樣設計?內容字段比較大,怎樣設計更好?哪些字段須要加索引?
用僞代碼實現 第一步:PC端只有兩個表單框和註冊按鈕,後端接收參數,再存入數據庫 第二步:添加移動端,須要發送短信 第三步:加入第三方登錄方式,須要發送郵件 第四步:有個兄弟公司,給了咱們一張execl表,裏面是用戶信息,須要後臺註冊這些用戶,如何修改現有的代碼 第四步:有點忘了,好像是如何進一步優化 這裏第三步就答很差了,考察的是邏輯能力和代碼組織能力,設計模式的重要性。
本身自由發揮,項目中遇到的應該是最好答的
個人回答 工廠模式:定義一個標準,用到的類能夠按這個標準實現相應功能 單例模式:防止重複實例化,減小資源調用 數據映射:數據庫ORM應用 適配器模式:兼容老數據,多態的應用 面試管問了怎麼兼容老數據,考察codereview能力
困了,先到這裏
三人面
筆試題挺有意思的,比較能考察出我這樣的面試者水平
筆試題的解法見php7.php文件中的2四、2五、26
題目意思大概是這樣的,印象不深很清了 當時作的時候好像作錯了,如今想了下,思路是獲取鍵值和值,而後雙重循環轉大寫便可。
大概是這樣的結構,我簡化了
<ul class="attr"> <li> <a href="www.baidu.com">百度baidu</a> <a href='www.tecent.com'>騰訊tengxun</a> <a href="www.alibaba.com">阿里巴巴alibaba</a> </li> </ul> 考察正則表達式的運用和數組的拼裝,我當時作的稀爛,回去稍微看了下正則,就很容易了。
test表中數據有500w,字段有id/t_id/type_id/plat_id,語句爲select max(t_id) from test where type_id=1 and plat_id=1
考察mysql語句優化,這裏主要是優化max函數,max函數會致使全表掃描,效率會很低,可使用order by加limit進行優化 我是這樣答的 select t_id from test where type_id=1 and plat_id=1 order by t_id limit 1; 固然還可使用加索引進一步優化速度,這裏能夠加上(type_id/plat_id)聯合索引。 ------------- 正確作法是給`t_id`加索引,還有(type_id/plat_id)聯合索引,order by 並不能避免全表掃描。
考察算法,貌似是查找? 我當時的想法是先對數組排序,而後索引的N-M的數就是M大的數
個人回答:稀爛,跨域出現問題會出現請求拒絕,是出於安全起見,設置Access-Control-Allow-Origin爲*便可。哈哈哈naive ------------- 回去搜了下,方案還挺多的。 參考https://dailc.github.io/2017/03/22/ajaxCrossDomainSolution.html
沒有實踐過對吧,不要緊,會google嗎?會背嗎?腦子能留個大概的原理嗎?
本身自由發揮,項目中遇到的應該是最好答的
簡歷上的項目詢問,項目中最有難度的地方?如何解決的?
困了,睡
一面
沒有筆試題,純面試題,很注重基礎,好比操做系統
本身平時沒注意這個東西,因此答的稀爛,問到有沒有連數據庫測,我說有,只是用預期數據與數據庫查出的數據對比測試 面試官問有沒有用過mock 懵逼了,這個概念確實聽過,沒去作過,意思是造假的意思,經過模擬數據庫操做來達到測試目的,還有stub站樁,須要多實踐啊騷年 o_o ------------- 參考:https://phpunit.de/manual/current/zh_cn/test-doubles.html
看我簡歷中寫用過
我當時用的是laravel中的隊列機制,經過dispatch()觸發任務,php artisan queue:work 開啓後臺進程監視隊列並完成任務 面試官不知足,問我他的原理,怎樣實現的? 我說用的是list,經過觸發lpush入隊,而後依次rpop出隊處理任務 面試官說這是阻塞的,能不能有高效的作法,我說不清楚,面試官好像說能夠把一個list的數據放到多個list中並行處理,zzz。
不知道,只知道根據score分值排序,有知道的同窗能夠留言 請自行google redis zset 多字段排序 ------------- 查了下,有說先自行排序後存入redis https://segmentfault.com/q/1010000004669705
做爲cs專業的phper,大學學的都交給老師了,zzz
進程能夠有多個線程,在php中yield能夠實現協程,面試官問swoole新版本中自帶協程,你怎麼理解? 沒研究過zzz ------------- 進程是正在運行的程序的實例 進程是內核分配資源的最基本的單元 線程是內核執行的最基本的單元 進程內能夠包含多個線程 協程的話至關於語言本身實現一個函數調度 參考:http://www.cnblogs.com/lxmhhy/p/6041001.html
看到我會react.js問的
我說就好比react裏的組件能夠理解爲一個class類,模塊的意思是一個文件就是一個模塊,有單獨的做用域 ------------- 參考:http://xiaodongtongxue.top/2016/05/20/淺談前端自動化%20工程化%20組件化%20模塊化/
get是獲取資源,post建立資源 get數據長度有限制,post無限制 get數據在url中安全性差,post不顯示在url中更安全 怎麼實現的,懵逼zzz ------------- 參考:https://zhuanlan.zhihu.com/p/22536382
送命題,沒看過就老實說沒看過好了,否則會xxxx,好比我說了看了《圖解HTTP》,首先問了我上面那道題,而後說你看的書不夠深刻,我。。。。
三面
還覺得很簡單呢,直接說了mysqli和pdo,mysql棄用了 面試官來了句不是問這個,是問鏈接池 我對這個概念很懵,就回了是持久鏈接嗎,能夠用mysql_connect() 面試官再問好比laravel默認使用什麼mysql鏈接的 我猜的是pdo吧 他說再想一想 我xxxx,就這樣過了 ------------- 回去很鬱悶的查了下,默認PDO,我還覺得是想考察關於php編譯時mysqlnd這樣的呢 All database work in Laravel is done through the PHP PDO facilities so make sure you have the driver for your particular database of choice installed on your machine before you begin development.
有這樣一張表 自增id、名字、暱稱、年齡、客戶類型、建立時間
哪些字段須要創建索引?爲何?
我說年齡、建立時間、客戶類型須要創建索引,where條件常常用到的字段 面試官說客戶類型用的enum枚舉呢,是否是也須要創建索引 我說不清楚 面試官說實際上是不須要的,枚舉類型只有幾種,mysql查詢時會分組查,通常寫sql前能夠用explain觀察sql語句
很幸運,本身一直用的是php7,由於php7速度有很大提高,也有不少新特性,好比標量類型聲明、返回類型聲明 命名空間、Trait、自動加載都是現代php所須要的 面試官問有本身發不過composer包嗎?他的自動加載原理是怎麼樣的? 本身建立過composer包,沒發佈,自動加載是經過sql_autoload_register()實現的 面試官說以前都是include引入的對吧,你應該在往前想下 我xxxx 面試官說是當這個文件使用的時候,纔會加載進來,以達到自動加載目的。
簡歷寫了瞭解nginx負載均衡和反向代理,你是怎麼作的
php-fpm能代理其餘端口嗎?除了默認9000
nginx配置php-fpm的時候走的是什麼協議?還能夠走其餘協議嗎?
本身搭建的vps,負載均衡是經過多個端口實現的,反向代理是代理到apache 能夠走其餘端口,須要配置ini文件,走的http協議,其它協議,不知道 面試官說能夠走tcp協議,好比socket
tp是國人寫的,理念比較陳舊過期 laravel是如今最火的php框架,開源社區活躍,工具也最多,運用了面向對象的思想和不少設計模式,是值得學習和運用的選擇 laravel的源碼看過嗎? 看過,laravel的container容器,還有ioc控制反轉、di依賴注入,經過server provider服務提供者bind綁定實例放入到容器內, 而後經過make解析容器中的某個實例,能夠經過facade門面直接靜態調用。 面試官說怎麼兼容以前的版本,好比像app那樣,既發佈了新的版本,老版本也須要兼容。 我沒作過,個人想法是一經過適配器模式,達到兼容二者的需求,二可使用dingo/api多版本控制
自由發揮,其實也蠻重要的,往積極方面答總沒錯,好比深刻php、擴展技術棧
簡歷上的項目詢問,項目中最有難度的地方?如何解決的?
兩面
套路真多,這面試官頗有代入感
機智點,按你填表裏寫的離職理由答就行,別露餡了,哈哈哈。
這裏機智點答就行,比較的話講二者的使用場景,好比php適合web開發,java有多種選擇,web和安卓
我覺得是說我有沒有去培訓過,我固然說沒了 我說的是慕課網的優秀課程和《Modern PHP》《PHP核心技術和最佳實踐》《PHP the right way》
tp是國人寫的,理念比較陳舊過期 laravel是如今最火的php框架,開源社區活躍,工具也最多,運用了面向對象的思想和不少設計模式,是值得學習和運用的選擇 laravel的源碼看過嗎? 看過,laravel的container容器,還有ioc控制反轉、di依賴注入,經過server provider服務提供者bind綁定實例放入到容器內, 而後經過make解析容器中的某個實例,能夠經過facade門面直接靜態調用。
php面向對象說下 封裝、繼承、多態 多態描述下 當時這裏說成了重載了,真是扇本身一巴掌,其實多態是一套接口下面的實現類,注入的是接口類,使用的是實現類,從而實現多態 php的類型有哪些 還真的忘了,掌嘴,沒說完整,說了array數組、string字符串、object對象、resource資源、NULL
dingo/api和jwt-auth是本身搭的嗎?有沒有遇到坑? 當時項目趕,用的集成的,本身搭也是沒問題的 entrust怎麼用的?有哪些表? user用戶表、role角色表、perm權限表、role-user用戶角色關聯表、role-perm角色權限關聯表 咱們還作了擴展,menu菜單表、menu-perm菜單權限關聯表
自由發揮,其實也蠻重要的,往積極方面答總沒錯,好比深刻php、擴展技術棧
當場黑人問號,爲何是兩個問題? 面試官:我想看你的關注點 我說了這邊技術團隊是怎樣的+有沒有技術分享+我加入公司將作什麼 別問我爲何問了三個,由於我get到了面試官的點,哈哈哈
簡歷上的項目詢問,爲何離職,以前收穫了什麼,你期待的公司是怎樣的etc
爲何說套路呢,否則發現這個面試官全部準備的題都是有針對性的,後面他就指出個人基礎不夠紮實,並舉例說一個基礎紮實的人和 一個基礎不紮實的人作同一個東西,基礎紮實的可能很快就會作完且不會出錯,而不紮實的總是須要google且作出的東西會出錯, 也不知道哪裏錯了,由於是拿來主義並無轉爲本身的東西。而後指出我沒有系統學習過php,由於php容易入門, 可是學會它須要花很大功夫。最後說個人規劃還不錯,是加分項,哈哈哈。
面了5家公司,拿了3份offer,自我感受還良好吧,哈哈哈。最主要的仍是心態、面試準備、面試總結、睡眠質量、水
寫的挺流水化的,不少都有點遺忘,畢竟2星期後了,只能記住有意義的題目了。
有心的同窗應該會看到我這個noteBook下面的其它知識,但願對大家有些許幫助。
後語:有收穫的話請加顆小星星,沒有收穫的話能夠 反對 沒有幫助 舉報三連