php相關筆試題-(持續更新)

1.若是系統作了負載均衡(或者代理),服務端如何準確得獲取用戶端的IP?php

答:在負載均衡服務器軟件
(nginx,apache,tomcat)添加X-Forwarded-For,簡稱XFF頭,它表明客戶端,也就是HTTP的請求端真實的IP,只有在經過了HTTP 代理或者負載均衡服務器時纔會添加該項。它不是RFC中定義的標準請求頭信息,在squid緩存代理服務器開發文檔中能夠找到該項的詳細介紹。html

相關網站:https://blog.csdn.net/ai_zxc/article/details/78891019前端

 

2.如何實現精準的定時任務?mysql

答:在Crontab中使用PHP執行腳本(或URL),其實方法不少,不過這個應該是比較好的。nginx

相關網站:https://www.jb51.net/article/89186.htmgit

 

3.mysql中,如何判斷一個字段是否建立索引?github

答:show index from 數據庫名.表名web

 

4.mysql中,如何判斷一個字段是否須要建立索引?redis

答:較頻繁地做爲查詢條件的字段sql

相關網站:https://www.jb51.net/article/56532.htm

 

5.常見的web漏洞,並說明出現的緣由和解決方案?

答:SQL注入漏洞、XSS、CSRF、上傳漏洞、未加密登陸請求 等等

相關網站:https://blog.csdn.net/qq_28061489/article/details/79572310,https://wenku.baidu.com/view/dbb0991afbd6195f312b3169a45177232f60e41c.html,https://blog.csdn.net/u013777676/article/details/52124298/

 

6.php中namespace的做用?

答:解決用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字衝突。爲很長的標識符名稱(一般是爲了緩解第一類問題而定義的)建立一個別名(或簡短)的名稱,提升源代碼的可讀性。

相關網站:官網:http://php.net/manual/zh/language.namespaces.rationale.php,https://www.cnblogs.com/kuyuecs/p/3556421.html

 

7.列出redis支持的數據類型?

答:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

 相關網站:http://www.runoob.com/redis/redis-data-types.html

 

8.列出php中類的自動加載相關的函數名?

答: __autoload() 和 spl_autoload_register()

相關網站:官網:http://php.net/manual/zh/language.oop5.autoload.php

 

9.統計一個字符串在另外一個字符串出現的次數?

答:

substr_count($haystack, $needle [,$offset [,$length]])

其中參數:
$haystack表示母字符串,$needl表示要查找的字符

$offset表示查找的起點,$length表示查找的長度,均爲可選參數

相關網站:https://www.jb51.net/article/58015.htm

 

10.列出HTTP狀態碼,並簡述意思,重小到大

答:1xx 消息;2xx 成功;3xx 重定向;4xx 請求錯誤;5xx服務器錯誤;(要注意下499,nginx的錯誤,多是時間超時,內存溢出)

相關網站:http://www.runoob.com/http/http-status-codes.html,https://baike.baidu.com/item/HTTP%E7%8A%B6%E6%80%81%E7%A0%81/5053660?fr=aladdin

 

11.若是後端有多臺服務器,如何處理session?

答:

第一種辦法:把原來存儲在服務器磁盤上的session數據存儲到客戶端的cookie中去(加密後後存在cookie中,前端不開cookie就悲劇了)。

第二種辦法:同一個用戶的訪問請求都被派送到同一個服務器上(某臺機子掛掉了,就不行了)。

第三種辦法:作一箇中間層,專門來存儲全部訪問涉及到的session。也就是全部的session都存儲在這裏。服務器端統一從這裏讀取session數據。(能夠保存在共享的文件服務器中、數據庫中(nosql爲好))

相關網站:https://www.cnblogs.com/wangtao_20/archive/2013/10/29/3395518.html

 

12.git的經常使用命令?

答:

git clone git://github.com/schacon/grit.git 從服務器上將代碼給拉下來

git checkout -b dev 創建一個新的本地分支dev

git branch 查看本地全部分支

git status 查看當前狀態 

git pull 拉取

git commit 提交 

git push (遠程倉庫名) (分支名) 將本地分支推送到服務器上去。

git log 看你commit的日誌

git add . 添加全部修改文件

git commit -m ‘修改內容’  提交添加文件,並備註提交版本

git diff  查看修改文件列表

相關網站:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html,https://blog.csdn.net/halaoda/article/details/78661334

 

13.用php代碼去除HTML標籤方法?

答:strtr()和strip_tags()

 

14.php的運行方式有哪些?

答:

1)CGI(通用網關接口/ Common Gateway Interface)。

2)FastCGI(常駐型CGI / Long-Live CGI)。

3)CLI(命令行運行 / Command Line Interface)。

4)Web模塊模式(Apache、nginx、iis等Web服務器運行的模式) ,最經常使用的運行方式啦。

5)ISAPI(Internet Server Application Program Interface)微軟提供的一套面向Internet服務的API接口。

相關網站:https://blog.csdn.net/xujingzhong0077/article/details/53316767,https://blog.csdn.net/s465564/article/details/77224627

 

15.php鏈接數據庫的方式?

答:1)經常使用普通方法,mysql_connect()【 PHP 5.5.0 起已廢棄】;2)面向對象方法(也可面向過程)mysqli();3)PDO;3)ADODB

參考網站:https://blog.csdn.net/wd2011063437/article/details/79003477,https://www.cnblogs.com/joshua317/articles/5989781.html

 

16.簡述MySQL的InnoDB的四種事務隔離級別?

答:

一、讀不提交(Read Uncommited,RU)

  這種隔離級別下,事務間徹底不隔離,會產生髒讀,能夠讀取未提交的記錄,實際狀況下不會使用。

二、讀提交(Read commited,RC)

  本事務讀取到的是最新的數據(其餘事務提交後的)。問題是,在同一個事務裏,先後兩次相同的SELECT會讀到不一樣的結果(不重複讀)

三、可重複讀(Repeatable Read,RR)【MySQL 默認的級別】

  在同一個事務裏,SELECT的結果是事務開始時時間點的狀態,所以,同一個事務一樣的SELECT操做讀到的結果會是一致的。可是,會有幻讀現象

四、 串行化(SERIALIZABLE)。讀操做會隱式獲取共享鎖,能夠保證不一樣事務間的互斥

參考網站:https://www.cnblogs.com/huanongying/p/7021555.html

 

17.如何參看當前的mysql的事務隔離級別?

答:mysql> show variables like '%isolation%';

 

18.oop是什麼?特色有哪些?

答:oop是面向對象編程。封裝、多態、繼承、易維護 。

 

19.接口安全方面是怎麼處理的?

答:RSA雙向加密,驗證參數後才執行。添加時間戳,處理的時候判斷時間,通常60秒,前端的請求加上時間戳,後臺將時間戳解密後與後臺的服務器做比較,時間差距超過60秒就不處理。

 

20.接口和抽象類的區別是什麼?

答:

接口:是經過關鍵字 interface 來聲明的,接口中的成員常量和方法都是 public 的,方法能夠不寫關鍵字public,接口中的方法也是沒有方法體。接口中的方法也天生就是要被子類實現的。 

抽象類:是經過關鍵字abstract來聲明的,是一種不能被實例化的類,只能做爲其餘類的父類來使用。抽象類與普通類類似,都包含成員變量和成員方法,二者的區別在於,抽象類中至少要包含一個抽象方法,抽象方法沒有方法體,該方法天生就是要被子類重寫的。

區別:抽象類和接口實現的功能十分類似,在應用中選擇抽象類仍是接口要看具體實現。 

1).對接口的繼承使用implements,抽象類使用extends.

2).接口中不能夠聲明變量,但能夠聲明類常量.抽象類中能夠聲明各類變量

3).接口沒有構造函數,抽象類能夠有

4).接口中的方法默認爲public,抽象類中的方法能夠用public,protected,private修飾

5).一個類能夠繼承多個接口,但只能繼承一個抽象類

參考網站:https://www.cnblogs.com/catcrazy/p/6289446.html

 

21.tcp/ip是什麼?

 答:TCP(傳輸控制協議)和IP(網際協議),是兩個協議,可是一般會合在一塊兒說,由於他們要在一塊兒才能造成現有的或聯網底層。

 

22.udp是什麼?

答:UDP協議全稱是用戶數據報協議,在網絡中它與TCP協議同樣用於處理數據包,是一種無鏈接的協議。

相關文章
相關標籤/搜索