1.字符串"0"在PHP和js中轉換爲布爾值是false仍是truephp
php:false; php 弱語言 '0'和0同樣; js:true;字符串除了空字符串('')其餘都是true(包括' ' 這種中間有空格的);
2. echo,print_r ,print,var_dump 區別 echo:語句結構; print:是函數,有返回值 print_r:能打印數組,對象 var_dump:能打印對象數組,而且帶數據類型
3.如何獲取客戶端的IP(要求取得一個int)和服務器端的IP的代碼html
$ip = $_SERVER["REMOTE_ADDR"]; 或者:getenv('REMOTE_ADDR'); 轉化爲int $intIP = ip2long($ip); $_SERVER["SERVER_ADDR"]; gethostbyname('www.baidu.com');
4. mysql聯合索引index_a_b_c(a,b,c) charset=utf8,a int(10),b varchar(10),c tinyint(1),問條件where a = 5 and c = 1用到的索引長度。mysql
索引長度:4+1 = 5 (用到a,c)nginx
where a=5 and b = "hahah"; 面試
索引長度:4+10*3+2 = 36 (用到a,b)正則表達式
5.json和jsonp的區別,何時用。redis
jsonp 跨域請求算法
6.寫出點擊一個div出現相應的序號的jssql
7.session和cookie的區別和聯繫數據庫
8.PHP實現遍歷出文件夾和他下面子文件的代碼
1. <?php 2. $dir = '/Users/zhaoning/Desktop/算法'; 3. 4. function getAllFile($dir){ 5. $allFileArr = array(); 6. if (is_dir($dir)) { 7. $res = opendir($dir); 8. while ($row = readdir($res)) { 9. if ($row == '.' || $row == '..') { 10. continue; 11. } 12. if (is_file($dir.'/'.$row)) { 13. $allFileArr[] = $row; 14. }else if (is_dir($dir.'/'.$row)) { 15. $allFileArr[$row] = getAllFile($dir.'/'.$row); 16. } 17. } 18. closedir($res); 19. } 20. return $allFileArr; 21. } 22. var_dump(getAllFile($dir)); 23. ?>
9.寫出匹配html標籤的而不匹配div span img的正則表達式
10.寫出下面正則表達式的含義
$ ^ [^] ? ?:
11.PHP中this和self的區別
this:對象
self:類
12.如何防止SQL注入,XSS攻擊和CSRF攻擊
SQL注入:mysqli_real_escape_string()轉義關鍵字符;
XSS攻擊:alert把一些cookie信息打印出來;過濾掉<>等關鍵字符串
CSRF攻擊:跨站攻擊。防止:token,驗證碼
13.Linux的命令:查找出文件名後綴是.txt的,內容包含delete的文件,並刪除
1. find / -name "*.txt" | xargs -n1 -I(這是i) 'xxx' grep -l(這是L) 'delete' 'xxx' | xargs -n1 -I 'zzz' rm -f 'zzz'
14.PHP解決多進程讀寫一個文件的方法
1. function putFile($file,$mode="w"){ 2. $file = fopen($file,$mode); 3. if(flock($file,LOCK_EX)){ 4. fwrite($file,'write a word'); 5. flock($file,LOCK_UN); 6. }else{ 7. echo "沒法訪問"; 8. } 9. fclose($file); 10. }
15.數據庫表的引擎有哪幾種?區別和場景
MyISAM:多用於select
Innodb:事務
memory:內存中,存儲快
merge:用於日誌和數據倉庫
archive:用於日誌,只有select和insert,不支持索引。
16.nginx和PHP的工做原理
17.ES鏈接PHP的擴展叫什麼名字
elasticsearch
18.調用接口須要什麼,簽名怎麼生成的,登錄接口的實現
簽名:( token + 時間戳 ) 加密 = sign
19.接口返回包含哪幾部分。
1. { 2. code: 3. msg: 4. data:{} 5. }
1.不知道什麼的英文
2.PHP錯誤種類.
3.var_dump(0123==123);var_dump('0123'==123); false true
4.36我的,6個賽道,沒有秒錶,比賽多少次可以得出前三名?
5.正方形四個角有四個蟲子,蟲子沿邊走,問:蟲子相遇(兩個碰頭)的機率是多少?
6.A去買水果3.5斤共14元,給老闆B 20 元 ,B沒零錢,找隔壁C換20元,回來後找A 6元,C發現這個錢是假的,找B,B又給C 20 元。問:B一共虧了多少錢。
7.快排
8.同一個ip,10分鐘能只能訪問5次
9.設計微博粉絲互粉,用戶1億。
問答:
http協議包含幾部分。
接口是怎麼實現的。
token 是怎麼生成的。
你知道哪些加密。
如何防止http包的數據篡改。好比說轉帳10塊,http包被劫,改爲100塊了。
針對有項目經驗的面試梳理:
1.自我介紹。
在哪工做,多長時間。作了什麼東西,項目背景,用到的技術,負責什麼工做。
答案:以前在滴滴打車工做,工做半年多。參加的項目有穀雨移動和司機幫。穀雨移動是(移動端)爲汽車租賃公司提供管理旗下快車的軟件。主要用的PHP+redis+ES。我主要負責服務分和各項報表的查詢和彙總。司機幫主要是面向快車司機的,司機可以查看本身的流水和服務分,服務時長等各項數據。我主要負責服務分的排名。
問:redis起什麼做用?
減小訪問es的次數
懶加載(訪問redis沒有數據,而後去查ES,把結果導入數據redis裏面)有什麼弊端?
數據不一樣步的問題。
怎麼解決數據不一樣步?
1.把懶加載換成定時跑數據。
2.從ES裏面讀取近期是否有數據變化,若是有重新讀取ES。沒有的話在還用原來的redis裏面的數據。
2.apache和nginx的區別
工做模式:
apache 有兩種模式perfork,worker模式
perfork:
worker:
nginx的epoll和select:
epoll:模式單線程異步非阻塞。
select:選擇性的
3.Innodb和My ISAM的區別
MyISAM:
支持全文索引,
不支持事務。
存儲結構:三個文件,一個數據文件,一個索引文件,一個表文件。
表級別的鎖。
Innodb:
不支持全文索引,
支持事務。
存儲結構:全部表同一個文件。
行級別的鎖。
4.hash索引和b+tree索引的區別