面試問題總結二(技術能力-PHP)----Ⅰ

一、你都作過什麼項目?php

答:第一份實習工做接觸的項目是CRM 銷售管理系統,一款用JSP語言開發的進銷存管理系統。第一份正式工做是一款主打高質量圖片社交社區網站項目,「美啦週末」(後改型爲」聊會兒」)。第二份工做是在一個外包公司工做,項目較多,都是交叉進行,論壇、微信、商城、門戶網站都接觸作過。html

 

二、你都作過哪些模塊?前端

答:登陸註冊,商品管理、購物車模塊、訂單管理、後臺數據統計分析、APP接口編寫、SEO簡單優化、第3方數據抓取。html5

 

三、當前國內或本地主要流行的WEB前端框架和後端框架?node

答:mysql

前端框架:Bootstrap、html5-boilerplate、Meteor、Semantic UI、Foundation、Materialize、Vue、Skeleton、Amaze UI、UIkit、Yui、kissy、MUI、Arale、JX、GMU、ZUI、Clouda Touch.jsreact.js、angular.js,layUI等;react

國內主要流行的幾款:jquery

Bootstrap : 來自 Twitter,是目前最受歡迎的前端框架。Bootstrap 是基於 HTML、CSS、JAVASCRIPT 的,它簡潔靈活,使得 Web 開發更加快捷。可跨平臺。linux

Clouda:Clouda是基於node.js的Webapp開發框架,在使用Clouda時須要安裝node.jsMongoDBlaravel

Vue :一套構建用戶界面的漸進式框架。

react.js:用於構建用戶界面的 JavaScript庫。

AngularJS:AngularJS 經過新的屬性和表達式擴展了 HTML

 

後端框架:ThinkPHP(TP)、Laravel、Yii、CodeIgniter(CI)、Zend Framework、CakePHP、Symfony

各類框架的優缺點能夠參考:https://blog.csdn.net/weixin_38893715/article/details/80240314

針對的項目不同,通常來講:

1.小型項目:CodeIngiter

2.中型項目:CakePHP、Zend Framework、Laravel、Thinkphp

3.大型重量級項目:Yii、Symfony、Laravel

 

四、你以前公司使用框架是什麼?

答:YII 和 thinkPHP

 

五、常見的開發環境,以及如何搭建?(重點在於搭建配置)

答:LAMP/LNMP、WAMP/WNMP

L: linux系統

W:windows系統

A:Apache

M:Mysql

P:PHP

 

六、PHP常見的模板引擎有哪些?有什麼做用?你會哪些?

Smarty

Smarty的特色是將模板編譯成PHP腳本,而後執行這些腳本。很快,很是靈活。

 

Heyes Template Class

一個很是容易使用,但功能強大而且快速的模板引擎,它幫助你把頁面佈局和設計從代碼中分離。

 

FastTemplate

一個簡單的變量插值模板類,它分析你的模板,把變量的值從HTML代碼中分離處理。

 

ShellPage

一個簡單易用的類,可讓你的整個網站佈局基於模板文件,修改模板就能改變整個站點。

 

STP Simple Template Parser

一個簡單、輕量級而且易於使用的模板分析類。它能夠從多個模板中組裝一個頁面,把結果頁面輸出到瀏覽器或者文件系統。

 

OO Template Class

一個你能夠用在本身程序中的面向兌現的模板類。

 

SimpleTemplate

一個能夠建立和結構化網站的模板引擎。它能夠解析和編譯模板。

 

bTemplate

短小可是快速的模板類,容許你把PHP邏輯代碼從HTML修飾代碼中分離。

 

Savant

一個強大且輕量級的PEAR兼容模板系統。它是非編譯型的,使用PHP語言自己作爲它的模板語言。

 

ETS - easy template system

可使用徹底相同數據重組模板的模板系統。

 

EasyTemplatePHP

適用於你的站點的一個簡單可是強大的模板系統。

 

vlibTemplate

一個快速、全能的模板系統,它包含一個緩存和調試類。

 

AvanTemplate

多字節安全的模板引擎,佔用不多系統資源。它支持變量替換,內容塊能夠設置顯示或隱藏。

 

Grafx Software’s Fast Template

一個修改版本的Fast Template系統,它包括緩存功能,調試控制檯以及沉默去除爲賦值塊。

 

TemplatePower

一個快速、簡單、功能強大的模板類。主要功能有嵌套的動態塊支持,塊/文件包含支持以及顯示/隱藏未賦值的變量。

 

TagTemplate

這個庫的功能被設計來使用模板文件,同時容許你從HTML文件檢索信息。

 

htmltmpl: templating engine

一個適用於Python和PHP的模板引擎。它面向但願在項目中分離代碼和設計的web應用開發人員。

 

PHP Class for Parsing Dreamweaver templates

一個分析Dreamweaver模板的簡單類,被用於Gallery 2 和WordPress的自定義模塊中。

 

MiniTemplator (Template Engine)

針對HTML文件的一個緊湊型模板引擎。對於模板變量和塊定義它具備簡單的語法。其中塊能夠嵌套。

 

Layout Solution

簡化網站開發和維護。它擁有經常使用的變量和頁面元素使你不須要重複作頁面佈局工做。

 

Cached Fast Template

它已經歸入FastTemplate,容許你緩存模板文件,甚至能夠在分離的塊內容上緩存不一樣的規格。

 

TinyButStrong

一個支持MySQL, Odbc, Sql-Server和ADODB的模板引

 

擎。它包含7個方法和兩個屬性。

 

Brian

Lozier’s php based template engine

只有2K大小,很是快而且是面向對象設計。

 

WACT

一個從設計中分離代碼的模板引擎。

 

PHPTAL

一個PHP下面的XML/XHTML模板庫。

 

在以前的工做經常使用到是smarty模板引擎

smarty 是用 php 寫出來的模板引擎,也是目前業界最著名的 php 模板引擎之一。它分離了邏輯代碼和外在的顯示,提供了一種易於管理和使用的方法,用來將混雜的 php 邏輯代碼與 html 代碼進行分離。

以前公司使用的是 TP 框架,已經封裝好了 smarty 模板,因此沒有單獨使用過 。

smarty 是個模板引擎,最顯著的地方就是有能夠把模板緩存起來。通常模板來講,都是作一個靜態頁面,而後在裏面把一些動態的部分用一切分隔符切開,而後在 PHP 裏打開這個模板文件,把分隔符裏面的值替換掉,而後輸出來。 而 smarty 設定了緩存參數之後,第一次運行時候會把模板打開,在 php 替換裏面值的時候把讀取的 html 和 php 部分從新生成一個臨時的 php 文件,這樣就省去了每次打開都從新讀取 html 了。若是修改了模板,只要從新刷下就好了。

 

七、面向對象(OOP)是什麼?(重點)

答:oop 是面向對象編程,面向對象編程是一種計算機編程架構,OOP 的一條基本原則是計算機程序是由單個可以起到子程序做用的單元或對象組合而成。

OOP 具備三大特色

一、封裝性:也稱爲信息隱藏,就是將一個類的使用和實現分開,只保留部分接口和方法與外部聯繫,或者說只公開了一些供開發人員使用的方法。因而開發人員只 須要關注這個類如何使用,而不用去關心其具體的實現過程,這樣就能實現 MVC 分工合做,也能有效避免程序間相互依賴,實現代碼模塊間鬆藕合

二、繼承性:就是子類自動繼承其父級類中的屬性和方法,並能夠添加新的屬性和方法或者對部分屬性和方法進行重寫。繼承增長了代碼的可重用性。PHP 只支持單繼承,也就是說一個子類只能有一個父類。

三、多態性:子類繼承了來自父級類中的屬性和方法,並對其中部分方法進行重寫。因而多個子類中雖然都具備同一個方法,可是這些子類實例化的對象調用這些相同的方法後卻能夠得到徹底不一樣的結果,這種技術就是多態性。多態性加強了軟件的靈活性

oop的優勢:

 

一、易維護 採用面向對象思想設計的結構,可讀性高,因爲繼承的存在,即便改變需求,那麼維護也只是在局部模塊,因此維護起來是很是方便和較低成本的。

二、質量高 在設計時,可重用現有的,在之前的項目的領域中已被測試過的類使系統知足業務需求並具備較高的質量。

三、效率高 在軟件開發時,根據設計的須要對現實世界的事物進行抽象,產生類。使用這樣的方法解決問題,接近於平常生活和天然的思考方式,勢必提升軟件開發的效率和質量。

四、易擴展 因爲繼承、封裝、多態的特性,天然設計出高內聚、低耦合的系統結構,使得系統更靈活、更容易擴展,並且成本較低。

 

八、MVC是什麼?以及相互之間的關係?

答:mvc 是一種開發模式,主要分爲三部分:M(model),也就是模型,負責數據的操做;

V(view),也就是視圖,負責先後臺的顯示;

C(controller),也就是控制器,負責業務邏輯 客戶端請求項目的控制器。

關係:若是執行過程當中須要用到數據,控制器就會到模型中獲取數據,再將獲取到的數據經過視圖顯示出來。

 

九、TP框架有哪些優勢?

答:TP 框架是咱們中國人本身開發的框架,各類資料比較齊全,國內用的比較多,比較簡單和方便,並且是免費開源的。

 

十、TP框架的特性有哪些?

答: 1.多表查詢很是方便,在 model 中幾句代碼就能夠完成對多表的關聯操做;

2.融合了 smarty 模板,使先後臺分離;

3.支持多種緩存技術,尤爲對 memcache 技術支持很是好;

4.命名規範,模型,視圖,控制器嚴格遵循命名規則,經過命名一一對應;

5.支持多種 url 模式;

6.內置 ajax 返回方法,包括 xml,json,html 等;

7.支持應用擴展,類庫擴展,驅動擴展等。

 

十一、TP框架中的大寫字母函數各表示什麼意思?

答: U:對 url 的組裝 ;

A:內部實例化控制器;

S:緩存處理;

R:調用某個控制器的操做方法;

D:實例化自定義模型類;

M:實例化基礎模型類;

I:獲取參數;   

L:設置或者獲取當前語言;   

C:設置或獲取,保存配置。

 

十二、請介紹下Laravel 框架?

答: laravel 框架的設計思想比較先進,很是適合應用各類開發模式,做爲一個框架,它爲你準備好了一切,composer 是 php 的將來, laravel 框架最大的特色和優秀之處就是集合了 php 比較新的特色,以及各類各樣的設計模式,Ioc 模式,依賴注入等。

 

1三、Laravel 框架有哪些特色?

答:1.強大的 REST router:用簡單的回調函數就能夠調用,快速綁定 controller 和 router ;

2.artisan:命令行工具,不少手動的工做都自動化;

3.可繼承的模板,簡化 view 的開發和管理;

4.blade 模板:渲染速度更快;

5.ORM 操做數據庫;

6.migration:管理數據庫和版本控制;

7.測試功能也很強大;

8.支持composer包管理工具;

9.laravel 框架引入了門面,依賴注入,Ioc 模式,以及各類各樣的設計模式等。

 

1四、談談對 RESTful Web 服務的認識?(重點 RESTful API )

參考資料:http://www.runoob.com/w3cnote/restful-architecture.html

答:REST全稱是Representational State Transfer,中文意思是表述(編者注:一般譯爲表徵)性狀態轉移。

  • 資源與URI:要讓一個資源能夠被識別,須要有個惟一標識,在Web中這個惟一標識就是URI(Uniform Resource Identifier)。URI既能夠當作是資源的地址,也能夠當作是資源的名稱。

 

  • 統一資源接口:統一接口包含了一組受限的預約義的操做,不論什麼樣的資源,都是經過使用相同的接口進行資源的訪問。接口應該使用標準的HTTP方法如GET,PUT和POST,並遵循這些方法的語義。
  • 資源的表述:資源在外界的具體呈現,能夠有多種表述(或成爲表現、表示)形式,在客戶端和服務端之間傳送的也是資源的表述,而不是資源自己。資源的表述包括數據和描述數據的元數據。
  • 資源的連接:核心概念:"超媒體即應用狀態引擎(hypermedia as the engine of application state)"。把一個個把資源連接起。
  • 狀態的轉移

通俗的理解:

URI定位資源,用HTTP動詞(GET,POST,PUT,DELETE)描述操做。

Resource:資源,即數據。
Representational:某種表現形式,好比用JSON,XML,JPEG等;
State Transfer:狀態變化。經過HTTP動詞實現。

 

1五、簡述一下數據庫的優化?

答:數據庫的優化能夠從四個方面來優化:

1.從結構層: web 服務器採用負載均衡服務器,mysql 服務器採用主從複製,讀寫分離

2.從儲存層: 採用合適的存儲引擎,採用三範式

3.從設計層: 採用分區分表,索引,表字段合適的字段屬性,適當採用逆範式,開啓 mysql 緩存

4.sql 語句層:結果同樣的狀況下,採用效率高,速度快節省資源的 sql 語句執行。

 

1六、如何解決異常處理?

答:拋出異常:使用 try...catch,異常的代碼放在 try 代碼塊內,若是沒有觸發異常,則代碼繼續執行,若是異常被觸發,就會拋出一個異常。Catch 代碼塊捕獲異常,並建立一個包含異常信息的對象。$e->getMessage(),輸出異常的錯誤信息。

解決異常:使用 set_error_handler 函數獲取異常(也可使用 try()和 catch()函數),而後使用 set_exception_handler()函數設置默認的異常處理程序,register_shutdown_function()函數來執行,執行機制是,php 要把調入的函數調入到內存,當頁面全部的 php 語句都執行完成時,再調用此函數。

 

1七、前端 HTML、JS(jQuery)、CSS 能力如何?

重點在於標籤語義化和jQuery的掌握,HTM五、CSS3 特性和多瀏覽器直接的兼容處理

 

1八、前端經常使用的插件有哪些?

答:jquery、touch.js、swiper.js、bootstop、Masonry (瀑布流)等

更多插件能夠去jQuery插件庫 http://www.jq22.com/ 查找

 

1九、權限管理(RBAC)的實現?

答: 1.首先建立一張用戶表:id name auto(保存格式爲:控制器-方法)

2.而後在後臺中建立一個基類控制器,控制器裏封裝一個構造方法,當用戶登錄成功後,使用 TP 框架中封裝好的 session 函數獲取保存在服務器中的 session id,而後實例化模型,經過用戶 id 獲取保存在數據表中的 auth 數據,使用 explode 函數分割獲取到的數據,並使用一個數組保存起來,而後使用 TP 框架中封裝好的常量獲取當前控制器和方法,而後把他們組裝成字符串,使用 in_array 函數進行判斷該數組中是否含有當前獲取到的控制器和方法,若是沒有,就提示該用戶沒有權限,若是有就進行下一步操做

相關文章
相關標籤/搜索