面試是你進入公司的第一個關卡,如同高考通常,可是面試不是高考,高考只有一次,而面試則能夠有N次,只要有合適的面試邀請,你就能夠繼續嘗試,不要懼怕失敗;假如公司沒有選擇你,不是你不優秀,只是你不符合他們的要求罷了,結束後總結下面試中不足的地方,及時調整好心態,準備下個面試纔是你最正確的作法。php
俗話說:「將軍不打沒準備的仗」,參加高考也是須要寒窗苦讀12年甚至更久,而求職面試呢,也是須要提早準備的,主要分以下幾個方面來準備:html
索引(Index)是幫助MySQL高效獲取數據的數據結構。提取句子主幹,就能夠獲得索引的本質:索引是數據結構。
MySQL索引的創建對於MySQL的高效運行是很重要的,索引能夠大大提升MySQL的檢索速度,從而提升性能,是MySQL查詢優化之一。前端
更多索引相關詳見 http://www.javashuo.com/article/p-auvdsifi-bd.html程序員
現現在,各類大數據、高併發的時代,數據庫的操做愈來愈成爲整個架構的性能瓶頸了,這點對於Web應用尤爲明顯。關於數據庫的性能,這並不僅是DBA才須要擔憂的事,而這更是咱們程序員須要去關注的事情。當咱們去設計數據庫表結構,對操做數據庫時,咱們都須要注意數據操做的性能。而在面試過程當中,也是常常會遇到的,因此,不管是面試準備仍是平常開發,咱們都應該關注這方面的東西。web
更多優化方法和技巧詳見 https://coolshell.cn/articles/1846.html面試
咱們都知道,事務是一個序列操做,其中的操做要麼都執行,要麼都不執行,它是一個不可分割的工做單位;因此MySQL事務主要用於處理操做量大,複雜度高的數據。redis
MySQL中只有使用了Innodb數據庫引擎的數據庫或表才支持事務;通常來講,事務都具有4個特性(ACID)::原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。算法
更多MySQL事務詳見 https://www.jianshu.com/p/bcc614524024sql
MyISAN與InnoDB都是MySQL的數據庫引擎之一,在5.5版以前MyISAM是MySQL的默認數據庫引擎;MyISAN雖然性能極佳,但卻有一個缺點:不支持事務處理(transaction),而偏偏相反,InnoDB的最大特點就是支持了ACID兼容的事務(Transaction)功能,因此,若是在平常開發中,若是遇到不知道選擇哪一種表類型的,那麼就選擇InnoDB吧。shell
更多MyISAN與InnoDB的的比較詳見 https://www.jianshu.com/p/a95...
HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW: World Wide Web)服務器傳輸超文本到本地瀏覽器的傳送協議。
HTTP是一個基於TCP/IP通訊協議來傳遞數據,HTTP是一個屬於應用層的面向對象的協議,因爲其簡捷、快速的方式,適用於分佈式超媒體信息系統,他的主要特色是:簡單快速、靈活、無鏈接、無狀態、支持B/S及C/S模式等。
HTTP協議工做於客戶端-服務端架構爲上。瀏覽器做爲HTTP客戶端經過URL向HTTP服務端即WEB服務器發送全部請求。Web服務器根據接收到的請求後,向客戶端發送響應信息。
更多有關HTTP協議詳見 https://www.jianshu.com/p/80e25cb1d81a
從字面意義上講,有人可能會認爲TCP/IP是指TCP和IP兩種協議。實際生活當中有時也確實就是指這兩種協議。然而在不少狀況下,它只是利用IP進行通訊時所必須用到的協議羣的統稱。具體來講,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都屬於TCP/IP協議。他們與TCP或IP的關係緊密,是互聯網必不可少的組成部分。TCP/IP一詞泛指這些協議,所以,有時也稱TCP/IP爲網際協議羣。
更多內容詳見 http://www.javashuo.com/article/p-urwnohvc-bu.html
雖然工做中,你以爲本身並無涉及到算法這方面的東西,可是算法是程序的核心,一個程序的好與差,關鍵是這個程序算法的優劣,因此對於冒泡排序、插入排序、選擇排序、快速排序這四種基本算法,我想仍是要掌握的。
一般,一個需求能夠有多種算法實現,因此除了理解算法的實現以外,咱們還須要關注算法的執行時間以及性能評估,這樣,才能找到最優算法,而時間複雜度和空間複雜度就是衡量一個算法的優劣。
更多算法知識點詳見 https://www.jianshu.com/p/a8cd6cbf733d
更多時間和空間複雜度詳見 http://www.javashuo.com/article/p-awbjfjnb-hb.html
這個算法經常使用於在一個有序數組中查找某個值第一次出現的位置、最後出現的位置、或者是一段區間。用二分法後,因爲每次能夠去掉一半無用的區間,會將時間複雜度減小到O(logn),而一般,二分算法能夠用遞歸以及不遞歸實現,這兩種建議都瞭解下。
二分法的基本作法是:一、肯定要查找的區間。二、肯定要二分時的參照點。二、區間內選取二分點。三、根據二分點的值,綜合左右區間狀況以及求解的目的,捨去一半無用的區間。
更多二分算法解析詳見 https://juejin.im/entry/585917c661ff4b006cba47cf
PHP7將在2015年10月正式發佈,PHP7,將會是PHP腳本語言的重大版本更新,同時將帶來大幅的性能改進和新的特性,以及改進一些過期功能。該發佈版本將會專一在性能增強,源自PHP版本樹中的phpng分支。在硅谷公司的ZendCon會議,PHP工具廠商Zend技術官方討論phpng和PHP7的進度。「(本次升級)真正專一於幫助業界的應用程序顯著增強執行速度,再加上,咱們在PHP中的其餘改進,」Zend的首席執行官安迪特曼斯 (曾參與了PHP語言的持續開發和發展)表示。
PHP7的新特性主要有:標量類型聲明、返回值類型聲明、null合併運算符、太空船操做符、經過define()定義常量數組、匿名類等。
PHP7新特性詳見 http://php.net/manual/zh/migration70.new-features.php
咱們知道Nginx (engine x)是一個高性能的HTTP和反向代理服務,也是一個IMAP/POP3/SMTP服務器。而Php-fpm是FastCGI的實現,並提供了進程管理的功能。由於Nginx不僅有處理http請求的功能,還能作反向代理;因此Nginx經過反向代理功能將動態請求轉向後端Php-fpm。
更多原理詳見 https://segmentfault.com/a/11...
例如從入口到控制器都幹了啥、一個URL請求到達路由這裏是怎麼再到相應的控制器等,這可能涉及框架的源碼分析,這個在面試過程當中,我相信有很多人遇到過,具體的我就很少說了,須要在本身多去研究和分析了。
你們都知道,ThinkPHP5是國人開發的,各類參考文檔都比較全,適合快速入門,而Laravel則是比較優雅的框架,也號稱是最藝術的。這兩種框架,都有本身很大的用戶羣體,有網友說:「ThinkPHP5的優點在於好用,Laravel的優點在於裝逼。」具體的比較,請你們能夠Google或者Baidu查詢更多比較詳情。
攻堅點這個就須要讀者結合本身的項目經驗進行總結概括了,主要包括工做中遇到的問題和解決方案,也就是,這個項目中你的特長之處,作的比較好的方面以及攻克的技術難點。
架構的話呢,這個也會有問到的,我就在面試過程當中,被遇到過不少次,你能夠說一下本身最近這個項目的一個架構就行,後者,說一下你最熟悉的一個項目的架構也行,具體的能夠本身查找相關資料深刻了解。
Linux是開源的、免費的操做系統,穩定性、安全性與併發性獲得業界公認,是一個統稱,常見的CentOS、Ubuntu、Rethat……
Linux的特色主要有:開源、免費、多線程、多用戶、安全性好、對內存和文件管理優越等;面試中,通常會問到一些你對於Linux的命令和用法的熟悉程度,若是你平常開發中,常常用到,那麼我相信面試應該也不成問題,可是也還須要多瞭解一點。
面向對象程序設計(英語:Object-oriented programming,縮寫:OOP)是種具備對象概念的程序編程典範,同時也是一種程序開發的抽象方針。它可能包含數據、屬性、代碼與方法。對象則指的是類的實例。它將對象做爲程序的基本單元,將程序和數據封裝其中,以提升軟件的重用性、靈活性和擴展性,對象裏的程序能夠訪問及常常修改對象相關連的數據。
PHP面向對象的三大特性是:封裝、繼承、多態;同時OOP軟件的三個目標是:重用性、拓展性、靈活性。因此,採用OOP這種編程思想和技術爲編程人員敞開了一扇大門,使其編程的代碼更簡潔、更易於維護,而且具備更強的可重用性。
MVC模式(Model–view–controller)是軟件工程中的一種軟件架構模式,把軟件系統分爲三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。
MVC模式的目的是實現一種動態的程序設計,使後續對程序的修改和擴展簡化,而且使程序某一部分的重複利用成爲可能。除此以外,此模式經過對複雜度的簡化,使程序結構更加直觀。軟件系統經過對自身基本部分分離的同時也賦予了各個基本部分應有的功能。
關於OOP的更多詳見 http://www.runoob.com/php/php-oop.html
關於MVC的更多詳見 http://www.manongjc.com/article/1864.html
在軟件工程中,設計模式(Design Pattern)是對軟件設計中廣泛存在(反覆出現)的各類問題,所提出的解決方案。這個術語是由埃裏希·伽瑪(Erich Gamma)等人在1990年代從建築設計領域引入到計算機科學的。
設計模式並不直接用來完成代碼的編寫,而是描述在各類不一樣狀況下,要怎麼解決問題的一種方案。面向對象設計模式一般以類或對象來描述其中的關係和相互做用,但不涉及用來完成應用程序的特定類或對象。設計模式能使不穩定依賴於相對穩定、具體依賴於相對抽象,避免會引發麻煩的緊耦合,以加強軟件設計面對並適應變化的能力。其中,常見的設計模式有:工廠模式、單例模式等。
有關設計模式的更多請詳見 http://larabase.com/collection/5/post/143
Redis和Memcache都屬於內存(memory)鍵-值(key-value)數據庫,在設計和思想上有許多相同之處,功能和應用在不少場合(如分佈式緩存服務)也類似。它們都從屬於數據庫解決方案中的nosql家族,因爲二者都將數據存儲在內存中,天然而然,它們都是很是理想的緩存實現方案。
Memcache最初是由Brad Fitzpatrick於2003年開發而成。而Redis則由Salvatore Sanfilippo於2009年建立,它自己也從Memcache上吸收借鑑大量寶貴經驗教訓,被稱爲「強化版Memcache」。確實,Redis在功能多樣性方面要賽過Memcache,雖然強大且更具靈活性,但複雜程度也比Memcache更甚。而Redis和Memcache的不一樣點主要體如今:數據類型支持不一樣、內存管理機制不一樣、數據持久化支持、集羣管理的不一樣等。
有關比較詳情查看 https://www.biaodianfu.com/re...
也許有的人會說,我做爲一名後端開發人員,我須要學習前端技術嗎?答案是確定的,無論是對於工做仍是本身的職業發展規劃,前端技術都是須要學習和掌握的,例如Javascript、Jquery、Ajax都要了解的,若是會Vue或者Node.js等更好。在面試中,偶爾會涉及到一些。
PHP處理跨域通常有三種方法:服務器代理、Jsonp、服務器腳本增長支持;有些網站處於安全考慮, 不會設置容許跨域, 而咱們又恰好會用到一次跨域請求, 那麼, Jsonp就派上用場了。
Jsonp如何實現跨域:因爲同源策略的限制,XmlHttpRequest只容許請求當前源(域名、協議、端口)的資源,爲了實現跨域請求,能夠經過script標籤實現跨域請求,而後在服務端輸出JSON數據並執行回調函數,從而解決了跨域的數據請求。
其餘更多有關Jsonp的用法,能夠自行百度。
先後端分離的開發方式,咱們以接口爲標準來進行推進,定義好接口,各自開發本身的功能,最後進行聯調整合。不管是開發原生的APP仍是webapp仍是PC端的軟件,只要是先後端分離的模式,就避免不了調用後端提供的接口來進行業務交互,這個時候,數據信息就很是重要了。
咱們經常使用到的儘可能保證數據安全的方法主要方式有:使用https、請求籤名(防止參數被篡改)、身份確認機制(每次請求都要驗證是否合法)、APP中使用ssl pinning防止抓包操做、對全部請求和響應都進行加解密操做等;這裏我想說一下,能夠了解一下jwt。
什麼是JWT https://www.jianshu.com/p/576dbf44b2ae
這個,主要採用PHP函數parse_url()來解析,本函數解析一個URL並返回一個關聯數組,包含在URL中出現的各類組成部分,並瞭解URL的各個組成部分的含義和所在位置;一個URL,通常都包括:協議、域名、端口(web的不少80默認)、文件名、參數等。
有關parse_url的用法和返回值詳見 http://www.php.net/manual/zh/function.parse-url.php
這是我結合本身面試過程當中,總結的一些經驗,但願能幫助到你們,若是有說的不對或者不到位的地方,歡迎指正和交流。在此,祝願你們都能找到一份滿意的工做。