首頁  >  文章  >  後端開發  >  2018年部分經典面試題

2018年部分經典面試題

王林
王林原創
2019-08-19 13:50:365317瀏覽

今天為大家蒐集了一下面試題,希望對大家有幫助,謝謝!

推薦PHP相關影片教學:https://www.php.cn/course/list/29/type/2.html

1、 PHP語言的一大優點是跨平台,什麼是跨平台?

PHP的運行環境最優搭配為Apache MySQL PHP,此運行環境可以在不同作業系統(例如windows、Linux等)上配置,不受作業系統的限制,所以叫跨平台

2、WEB開發中資料提交方式有幾種?有什麼區別?百度使用哪種方式?

#Get與post兩種方式

區別:

1. Get從伺服器取得數據,post傳送資料給伺服器

2. Get傳值在url中可見,post在url中不可見

3. Get傳值一般在2KB以內,post傳值大小可以在php.ini中進行設定

4. get安全性非低,post安全性較高,執行效率卻比Post高

建議:

1、get式安全性較Post式要差些包含機密資訊建議用Post資料提交式;

2、做資料查詢建議用Get式;做資料添加、修改或刪除建議用Post方式;

百度使用的get方式,因為可以從它的URL中看出

3、掌握PHP的哪些框架、模板引擎、系統等

框架:框架有很多,例如zendframe、CI、Yii等等,咱們學過的是thinkphp

#模板引擎:也有很多,在課本中有,咱們學過的是smarty

系統:有很多,例如:康盛的產品(uchomesupesitediscuzX等),帝國系統、DEDE(織夢)、ecshop

4、說一下你所掌握的網頁前端技術有哪些?

熟練DIV CSS網頁佈局,JavaScript,jQuery框架、photoshop圖片處理

5、AJAX的優點是什麼?

ajax是非同步傳輸技術,可以透過javascript實現,也可以透過JQuery框架實現,實現局部刷新,減輕了伺服器的壓力,也提高了使用者體驗

## 6.安全性對一套程式至關重要,請說說在開發中應該注意哪些安全機制?

①防遠端提交;②防SQL注入,對特殊程式碼進行過濾; ③防止註冊機灌水,使用驗證碼;

##7、在程式的開發中,如何提高程式的運作效率?

##①優化SQL語句,查詢語句中盡量不使用select *,用哪個欄位查哪個欄位;少用子查詢可用表連接取代;少用模糊查詢;②資料表中建立索引;③對程式中常用到的資料產生快取;

8、PHP可否與其它的資料庫搭配使用?

PHP與MYSQL資料庫是最優搭配,當然PHP也可以去其它的資料庫搭配使用,例如MSSQL等, PHP中預留了操作MSSQL的函數,只要開啟就可以使用

9、現在程式設計中常採取MVC三層結構,請問MVC分別指哪三層,有什麼優點?

MVC三層分別指:業務模型、視圖、控制器,由控制器層呼叫模型處理數據,然後將數據映射到視圖層進行顯示,優點是:①可以實現程式碼的重用性,避免產生程式碼冗餘;②M和V的實作程式碼分離,從而使同一個程式可以使用不同的表現形式

10、對json資料格式的理解?

JSON

(

JavaScript Object Notation)是一種輕量級的資料交換格式,json資料格式固定,可以被多種語言用作資料的傳遞 PHP中處理json格式的函數為json_decode

(

string $json [, bool $assoc ] ) ,接受一個JSON格式的字串並且把它轉換為PHP變量,參數json待解碼的json string格式的字串。 assoc當此參數為TRUE時,將傳回array而非object;Json_encode

:將PHP變數轉換成json格式

11、Print、echo、print_r有什麼差別?

① echo和print都可以做輸出,不同的是,echo不是函數,沒有回傳值,而print是一個函數有回傳值,所以相對而言如果只是輸出echo會更快,而print_r通常用於列印變數的相關信息,通常在偵錯中使用。

② print 是列印字串

##③ print_r 則是列印複合型別如陣列物件

12、SESSION與COOKIE的差異?

①儲存位置:session儲存於伺服器,cookie儲存於瀏覽器②安全性:session安全性比cookie高

③session為'會話服務',在使用時需要開啟服務,cookie不需要開啟,可以直接用

13、PHP處理數組的常用函數?(重點看函數的'參數'和'返回值')

①array()建立數組;②count()傳回數組中元素的數目;③array_push()將一個或多個元素插入數組的結尾(入堆疊);④array_column()傳回輸入數組中某個單一列的值;⑤array_combine()透過合併兩個陣列來建立一個新數組;⑥array_reverse()以相反的順序傳回數組;⑦array_unique()刪除數組中的重複值;⑧in_array()檢查數組中是否存在指定的值;

14、PHP處理字串的常用函數?(重點看函數的'參數'和'返回值')

①trim()移除字串兩側的空白字元和其他字元;

②substr_replace()把字串的一部分替換為另一個字串;

③substr_count()計算子字串在字串中出現的次數;

④substr()傳回字串的一部份;

##⑤strtolower()把字串轉換成小寫字母;

⑥strtoupper()把字串轉換成大寫字母;

⑦strtr()轉換字串中特定的字元;

⑧strrchr()查找字串在另一個字串中最後一次出現;

⑨strstr()查找字串在另一個字符字串中的第一次出現(對大小寫敏感);strrev()反轉字串;strlen()傳回字串的長度;str_replace()取代字串中的一些字元(對大小寫敏感);print( )輸出一個或多個字串;explode()把字串打散為數組;is_string()偵測變數是否為字串;strip_tags()從一個字串中移除HTML標籤;mb_substr()用來截中文與英文的函數

  15、PHP處理時間的常用函數?(重點看函數的'參數'和'返回值')

  

date_default_timezone_get() 傳回預設時區。

  

date_default_timezone_set()設定預設時區。

  

date()格式化本機時間/日期。

  

getdate()傳回日期/時間資訊。

  

gettimeofday()傳回目前時間資訊。

  

microtime()傳回目前時間的微秒數。

  

mktime()傳回一個日期的 Unix時間戳記。

  

strtotime()將任何英文文字的日期或時間描述解析為 Unix時間戳記。

  

time()傳回目前時間的 Unix時間戳記。

  16、PHP處理資料庫的常用函數?(重點看函數的'參數'和'返回值')

  請參考php手冊,認真查看,此項目非常重要

  

17、PHP操作檔的常用函數?(重點看函數的'參數'和'回傳值')

  ①開啟檔;②刪除檔案;③讀取檔案;④寫入檔案;⑤修改檔案;⑥關閉檔案;⑦建立檔案等等,此項目非常重要,在工作中經常用來產生快取或靜態文件,請參考php手冊,認真查看

  

18、PHP操作目錄(資料夾)的常用函數?(重點看函數的'參數'和'返回值')

  ①開啟目錄;②刪除目錄;③讀取目錄;④建立目錄;⑤修改目錄;⑥關閉目錄等等,此項目非常重要,在工作中經常用來建立或刪除上傳檔案的目錄,建立或刪除快取、靜態頁面的目錄,請參考php手冊,認真查看

19、mvc是什麼?相互間有什麼關係?

答:mvc是一種開發模式,主要分為三部分:m(model),也就是模型,負責資料的操作;v(view),也就是視圖,負責前後台的顯示;c(controller),也就是控制器,負責業務邏輯

20、oop是什麼?

答:oop是物件導向程式設計,物件導向程式設計是一種電腦程式架構,OOP 的一個基本原則是電腦程式是由單一能夠起到子程式作用的單元或物件組合而成

21、OOP具有三大特點

1、封裝性:也稱為資訊隱藏,就是將一個類別的使用和實作分開,只保留部分介面和方法與外部聯繫,或者說隻公開了一些供開發人員使用的方法。於是開發人員只 需要關注這個類別如何使用,而不用去關心其具體的實現過程,這樣就能實現MVC分工合作,也能有效避免程式間相互依賴,實現程式碼模組間松藕合。

2、繼承性:就是子類別自動繼承其父級類別中的屬性和方法,並可以新增新的屬性和方法或對部分屬性和方法進行重寫。繼承增加了程式碼的可重用性。 PHP只支援單繼承,也就是說一個子類別只能有一個父類別。

3、多態性:子類別繼承了來自父級類別中的屬性和方法,並對其中部分方法進行重寫。於是多個子類別中雖然都具有同一個方法,但是這些子類別實例化的物件呼叫這些相同的方法後卻可以獲得完全不同的結果,而這種技術就是多態性。多態性增強了軟體的靈活性。

22、smarty是什麼,有什麼作用?

答:回答一:smarty是用php寫出來的模板引擎,也是目前業界最著名的php模板引擎之一

它分离了逻辑代码和外在的显示,提供了一种易于管理和使用的方法,用来将混杂的php逻辑代码与html代码进行分离

回答二:smarty是php中最著名的引擎框架之一,我们公司使用的是TP框架,已经封装好了smarty模板,所以没有单独使用过

回答三: smarty是个模板引擎,最显著的地方就是有可以把模板缓存起来。一般模板来说,都是做一个静态页面,然后在里面把一些动态的部分用一切分隔符切开,然后在PHP里打开这个模板文件,把分隔符里面的值替换掉,然后输出来,你可以看下PHPLib里面的template部分。

23、TP框架有哪些优点?

答:TP框架是我们中国人自己开发的框架,各种资料比较齐全,国内用的比较多,比较简单和方便,而且是免费开源的

24、TP的特性有哪些?

答: 

1.多表查询非常方便,在model中几句代码就可以完成对多表的关联操作

2.融合了smarty模板,使前后台分离

3.支持多种缓存技术,尤其对memcache技术支持非常好

4.命名规范,模型,视图,控制器严格遵循命名规则,通过命名一一对应

5.支持多种url模式

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

7.支持应用扩展,类库扩展,驱动扩展等

24、TP框架中的大字母函数?

答: U:对url的组装

A:内部实例化控制器

S:缓存处理

R:调用某个控制器的操作方法

D:实例化自定义模型类

M:实例化基础模型类

I:获取参数

L:设置或者获取当前语言

C:设置或获取,保存配置

25、请介绍一下laravel框架?

答: laravel框架的设计思想比较先进,非常适合应用各种开发模式,作为一个框架,它为你准备好了一切,composer是php的未来,没有composer,php肯定要走向没落

laravel框架最大的特点和优秀之处就是集合了php比较新的特点,以及各种各样的设计模式,Ioc模式,依赖注入等

26、laravel有那些特点?

答:回答一: 

1.强大的rest router:用简单的回调函数就可以调用,快速绑定controller和router

2.artisan:命令行工具,很多手动的工作都自动化

3.可继承的模板,简化view的开发和管理

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

5.ORM操作数据库

6.migration:管理数据库和版本控制

7.测试功能也很强大

8.composer也是亮点

回答二: laravel框架引入了门面,依赖注入,Ioc模式,以及各种各样的设计模式等

27、请简述一下数据库的优化?

答:数据库的优化可以从四个方面来优化:

1.从结构层: web服务器采用负载均衡服务器,mysql服务器采用主从复制,读写分离

2.从储存层: 采用合适的存储引擎,采用三范式

3.从设计层: 采用分区分表,索引,表的字段采用合适的字段属性,适当的采用逆范式,开启mysql缓存

4.sql语句层:结果一样的情况下,采用效率高,速度快节省资源的sql语句执行

28、如何解决异常处理?

答: 抛出异常:使用try…catch,异常的代码放在try代码块内,如果没有触发异常,则代码继续执行,如果异常被触发,就会 抛出一个异常。Catch代码块捕获异常,并创建一个包含异常信息的对象。$e->getMessage(),输出异常的错误信息。

目前购物车的实现主要是通过cookie、session或结合数据库的方式。下面分析一下它们的机制及作用。

1.cookie

2.cookie是由服务器产生,存储在客户端的一段信息。它定义了一种Web服务器在客户端存储和返回信息的机制,cookie文件它包含域、路径、生存期、和由服务器设置的变量值等内容。当用户以后访问同一个Web服务器时,浏览器会把cookie原样发送给服务器。通过让服务器读取原先保存到客户端的信息,网站能够为浏览者提供一系列的方便,例如在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告等等。利用cookie的特性,大大扩展了WEB应用程序的功能,不仅可以建立服务器与客户机的联系,因为cookie可以由服务器定制,因此还可以将购物信息生成cookie值存放在客户端,从而实现购物车的功能。用基于cookie的方式实现服务器与浏览器之间的会话或购物车,有以下特点:

3、cookie存储在客户端,且占用很少的资源,浏览器允许存放300个cookie,每个cookie的大小为4KB,足以满足购物车的要求,同时也减轻了服务器的负荷;

4、cookie為瀏覽器所內置,使用方便。即使使用者不小心關閉了瀏覽器窗口,只要在cookie定義的有效期內,購物車中的信息也不會丟失;

5、cookie不是可執行文件,所以不會以任何方式執行,因此也不會帶來病毒或攻擊使用者的系統;

6、基於cookie的購物車要求使用者瀏覽器必須支援並設定為啟用cookie,否則購物車則失效;

# 7.存在著關於cookie侵犯訪客隱私權的爭論,因此有些使用者會禁止本機的cookie功能。

2、session

1、session是實現購物車的另一種方法。 session提供了可以保存和追蹤使用者的狀態資訊的功能,使當前使用者在session中定義的變數和物件能在頁面之間共享,但是不能為應用程式中其他使用者所訪問,它與cookie最重大的區別是,session將使用者在會話期間的私有資訊儲存在伺服器端,提高了安全性。伺服器產生session後,客戶端會產生一個sessionid識別號保存在客戶端,以保持和伺服器的同步。這個sessionid是唯讀的,如果客戶端禁止cookie功能,session會透過在URL中附加參數,或隱含在表單中提交等其他方式在頁間傳送。因此利用session實施對使用者的管理則更為安全、有效。

2、同樣,利用session也能實現購物車,這種方式的特點是:

#1、session用新的機制保持與客戶端的同步,不依賴客戶端設置;

2、與cookie相比,session是儲存在伺服器端的信息,因此顯得更安全,因此可將身分標示,購物等資訊儲存在session中;

3、 session會佔用伺服器資源,增加伺服器端的負載,尤其當並髮用戶很多時,會產生大量的session,影響伺服器的效能;

4、因為session儲存的資訊更敏感,而且是文件形式保存在伺服器中,因此仍有安全隱患。

以上是蒐集的面試題,希望對大家有幫助。謝謝!

更多相關問題可以存取PHP中文網:https://www.php.cn/

#

以上是2018年部分經典面試題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn