摘要:由于協(xié)議中沒有定義任何狀態(tài)碼,所以除非在某些試驗條件下,服務(wù)器禁止向此類客戶端發(fā)送響應(yīng)。表示要完成請求,需要進一步操作。
最近在廣州找工作,大四狗,讀著三本前兩年剛升二本的學(xué)校,文科生,好像一切條件都非常不利,但我還是毅然選擇這條路——拍黃片,人不能固步自封,還是要拓展一下自己的知識面,不能只學(xué)php而不拓展視野,還是要學(xué)學(xué)python、java、前端這些
面試得有點心塞,各種因為學(xué)歷被刷,校招只投了幾個,不是被刷了簡歷就是沒勇氣投,默默告訴自己,以后一定要叫自己的兒子多考幾分!
她說我最近看起來很疲憊。
對啊因為找工作很多天睡不好了
他說還好,我們現(xiàn)在唯一的目標(biāo)是找工作,不用考慮其他的。
是啊,就像高考那會一樣。
話不多說,下面寫一下最近所經(jīng)歷的一些面試題,以后會繼續(xù)補充的
以下代碼輸出什么
輸出b,if中的空值賦值給$num,因此if條件必定為false,還有其他一些大同小異的題目,用=和==判斷for循環(huán)的,只要把握好基本的概念就行了
2.對于empty、isset概念的考察isset()和empty()函數(shù)的區(qū)別在于,前者只驗證一個值是否存在,后者在此基礎(chǔ)上還會檢驗它的值是否非空和非0
注:empty()只檢測變量,檢測任何非變量的東西都將導(dǎo)致解析錯誤
isset() 判斷一個變量是否已經(jīng)設(shè)置
當(dāng)設(shè)置一個變量值為0,empty() 認為這個變量同等于空,即相當(dāng)于沒有設(shè)置
可以定義一個變量,設(shè)置值為"",0,null,"aaa"幾種不同情況下,用if判斷empty、isset看看結(jié)果
3.預(yù)定義變量如:php中輸出當(dāng)前腳本文件名的預(yù)定義變量是$_SERVER["PHP_SELF"]
與DOCUMENT_ROOT有關(guān)。如:地址為http://baidu.com/test/kkk.php...,$_SERVER["PHP_SELF"]="/test/kkk.php"
還有一些重要的如$_SERVER["DOCUMENT_ROOT"],輸出網(wǎng)站所在的根目錄,如"D:/work/www"
$_SERVER["SCRIPT_FILENAME"],輸出"D:/work/www//kkk.php"
$_SERVER["HTTP_USER_AGENT"],獲取客戶端瀏覽器,操作系統(tǒng)等等
其他一些可以通過print_r($_SERVER)測試獲得,當(dāng)然不止這些,還有其他一些預(yù)定義變量,系統(tǒng)常量如__FILE__也是需要稍微去看一下
主要考察php的原生函數(shù),暫時分為數(shù)組函數(shù)、字符串處理函數(shù)、時間函數(shù)、文件操作函數(shù)、數(shù)據(jù)庫函數(shù),后面再看看需不需要擴展。注意這些函數(shù)一定都要去過一遍。
(1.1)遍歷指定文件夾下的所有文件夾及所有子文件夾確定是文件夾 —— 打開文件夾(產(chǎn)生dh句柄) —— 循環(huán)讀取文件夾內(nèi)容(讀取句柄的內(nèi)容,即為file/folder) —— 遞歸讀取上一步判斷為folder且文件夾不為"."或者".."的文件夾內(nèi)容
$dir = "D:/www/project/"; function readDirectory($dir){ if(is_dir($dir)){ // if ($dh = opendir($dir)) { while (($file = readdir($dh)) != false) { if (is_dir($dir.$file) && $file!="." && $file!="..") { echo $dir.$file."
"; readDirectory($dir.$file."/"); } } closedir($dh); } } } readDirectory($dir);
?>
(1.2)遍歷指定文件夾下的所有文件及其子文件夾中的所有文件"; // echo $dir.$file."(2)寫一個方法獲取url中的文件類型
"; echo "filetype:".filetype($dir.$file)."
"; } if (is_dir($dir.$file) && $file!="." && $file!="..") { readDirectory($dir.$file."/"); } } closedir($dh); } } } readDirectory($dir); ?>
如$url = "http://www.qq.com/test.php?a=..."; 取出"php"
function getFileName($url){ $a = explode("?", $url); $b = strrpos($a[0], "."); //strrpos(被搜索字符串,要查找字符串,[查找開始的位置]) 查找字符串最后一次出現(xiàn)的位置: 找到則返回最后一次出現(xiàn)的位置;未找到則返回false $c = substr($a[0], $b+1, 3); //substr(被操作字符串,開始位置,[結(jié)束位置]) 返回字符串的一部分 return $c; }(3)接口知識的考察
eg.
用戶登錄認證,請求地址為http://www.aa.com/user.php,后...,驗證是否正確
請求參數(shù):時間戳 Time 什么鬼參數(shù)忘了,即為param 還有一個是token,token值是Time+param的MD5加密,中間有加號
返回參數(shù):
成功:res["ret"] = 0; res["msg"] = "success";
失?。簉es["ret"] = 1; res["msg"] = "fail";
返回數(shù)據(jù)格式:json
下面是我的思路:
function valid(){ $data = $_GET["data"]; if(!$data){ $res["ret"] = 1; $res["msg"] = "fail"; echo json_encode($res); } $str = $data["Time"] . "+" . $data["param"]; if($data["token"] != md5($str)){ $res["ret"] = 1; $res["msg"] = "fail"; echo json_encode($res); }else{ $res["ret"] = 0; $res["msg"] = "success"; echo json_encode($res); } }
其實今天筆試的時候做這道題忘了怎么返回json格式的數(shù)據(jù)了,就直接用了Thinkphp的ajaxReturn,后來回來的時候查了一下才知道原來直接echo,這么簡單,框架還是為輔吧,要多寫原生。今天筆試的是一家手游公司,對數(shù)據(jù)庫操作和原生要求比較多。
5.對緩存的了解這個是我的薄弱環(huán)節(jié),實際項目沒操作過,打算來了解一下再跟你們說
二、數(shù)據(jù)庫知識 1.數(shù)據(jù)庫的基本增刪查改基本的增刪改查語句,關(guān)聯(lián)語句,函數(shù)等過一遍就行,可以過一下imooc的教程
慕課網(wǎng)——與MySQL的零距離接觸
我暫時還沒有實踐過mysql的優(yōu)化方式,自己在百度上看了一些方法,大概有以下的一些方法:
(1)創(chuàng)建表的時候避免使用NULL默認值,因為NULL對于大多數(shù)數(shù)據(jù)庫都需要進行特殊處理和索引邏輯等等。所以大多數(shù)時候不用NOT NULL,可以用特殊值0或1代替
(2)盡可能使用更小的字段類型,因為mysql從磁盤讀取數(shù)據(jù)之后是存到內(nèi)存當(dāng)中,這意味著更小的數(shù)據(jù)類型使得從磁盤讀取或者打包到內(nèi)存效率會更好
(3)字符集的轉(zhuǎn)換:客戶端或者應(yīng)用程序使用的字符集可能和數(shù)據(jù)庫使用的字符集不一致,需要在mysql運行過程中隱含轉(zhuǎn)化
(4)創(chuàng)建索引,如果一張表很大然后符合條件的值很多,那么創(chuàng)建索引就能帶來性能的提升。但是如果像性別,只有兩個值,就沒必要建索引,而是用enum。一張表的索引最好不超過6個,太多的話會影響Insert和Update的效率,因此要考慮刪除使用不頻繁的索引
(5)先考慮在where和order by這兩列上建立索引。盡量少在where子句中進行表達式操作、函數(shù)操作等等
(6)盡量避免使用select * ,只查詢需要用到的字段。盡量用betwwen and 代替in 和not in,也要避免在大量數(shù)據(jù)的where子句中使用or
(7)模糊查詢優(yōu)化:
使用FULLTEXT全文搜索(注意前提是MyISAM存儲引擎)
FULLTEXT解析器用“ ”(空格)、“,”(逗號)“.”(點號)作為默認的單詞分隔符,因此對于不使用這些分隔符的語言如漢語來說,F(xiàn)ULLTEXT解析器不能正確的識別單詞,對于這種情況需做額外處理。
(8)盡量滿足范式(有的情況下要用反范式)下面是三大范式的區(qū)別,也要去看一下
第一范式:數(shù)據(jù)庫表的每一列都是不可分割的原子數(shù)據(jù)項,而不能是集合,數(shù)組,記錄等非原子數(shù)據(jù)項。如果實體中的某個屬性有多個值時,必須拆分為不同的屬性
第二范式:滿足第一范式前提,當(dāng)存在多個主鍵的時候,才會發(fā)生不符合第二范式的情況。比如有兩個主鍵,不能存在這樣的屬性,它只依賴于其中一個主鍵,這就是不符合第二范式
第三范式:滿足第二范式前提,如果某一屬性依賴于其他非主鍵屬性,而其他非主鍵屬性又依賴于主鍵,那么這個屬性就是間接依賴于主鍵,這被稱作傳遞依賴于主屬性。
3.談?wù)凪yisam和Innodb存儲引擎(1)MyISAM強調(diào)性能,其執(zhí)行速度比InnoDB類型更快,但不支持事務(wù),而InnoDB提供事務(wù)支持以及外部鍵、行級鎖等高級數(shù)據(jù)庫功能
(2)如果增刪改操作比較多,或者需要事務(wù)支持,則使用Innodb,如果是讀的操作比較多,則使用Myisam
(3)MyISAM表鎖,Innodb行鎖
(1)memcached只能使用簡單的key-value形式進行存儲,而redis還支持hash,list,set等等。因此需要其他的數(shù)據(jù)類型支持的時候用redis更方便
(2)memcached是多核,redis是單核,所以在存儲小數(shù)據(jù)上redis性能更高,反之大數(shù)據(jù)上memcached的性能比redis要高
(3)memcached不支持持久化操作,數(shù)據(jù)不能備份,只能用于緩存使用,重啟后數(shù)據(jù)全部丟失。
redis支持持久化操作可以數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)
(4)redis只能使用單線程,性能受限于cpu性能,memecached是多線程
function getDepth($arr){
$max_depth = 1; foreach($arr as $key=>$val){ if(is_array($val)){ $depth = getDepth($val) + 1; if($depth > $max_depth){ $max_depth = $depth; } } } return $max_depth;
}
四、計算機網(wǎng)絡(luò) 1.說一下常見的HTTP狀態(tài)碼(1)消息(臨時響應(yīng)):1字頭。
這一類型的狀態(tài)碼,代表請求已被接受,需要繼續(xù)處理。這類響應(yīng)是臨時響應(yīng),只包含狀態(tài)行和某些可選的響應(yīng)頭信息,并以空行結(jié)束。由于 HTTP/1.0 協(xié)議中沒有定義任何 1xx 狀態(tài)碼,所以除非在某些試驗條件下,服務(wù)器禁止向此類客戶端發(fā)送 1xx 響應(yīng)。
eg.
100: 服務(wù)器僅接收到部分請求
101: 服務(wù)器已經(jīng)理解了客戶端的請求,并將通過Upgrade 消息頭通知客戶端采用不同的協(xié)議來完成這個請求。
(2)成功:2字頭。
代表請求已經(jīng)被服務(wù)器所接收、理解、并接受
eg.
200: 請求成功(其后是對GET和POST請求的應(yīng)答文檔。)
201: 請求被創(chuàng)建完成,同時新的資源被創(chuàng)建。
(3)重定向:3字頭。
表示要完成請求,需要進一步操作。 通常,這些狀態(tài)代碼用來重定向。
eg.
300: 多重選擇。鏈接列表。用戶可以選擇某鏈接到達目的地。
301: 頁面永久重定向
302: 頁面臨時重定向
304: 資源未被修改,服務(wù)器告訴客戶,原來緩沖的文檔還可以繼續(xù)使用
(4)請求錯誤:4字頭。
這些狀態(tài)代碼表示請求可能出錯,妨礙了服務(wù)器的處理
eg.
400: 服務(wù)器未能理解請求
401: 被請求的頁面需要用戶名和密碼。
403: 對請求頁面的訪問被禁止。(通常為沒有讀權(quán)限)
404: 服務(wù)器無法找到被請求的頁面。
408: 超出服務(wù)器等待時間
413: 由于所請求的實體的太大,服務(wù)器不會接受請求。
414: 由于url太長,服務(wù)器不會接受請求。當(dāng)post請求被轉(zhuǎn)換為帶有很長的查詢信息的get請求時,就會發(fā)生這種情況。
(5)服務(wù)器錯誤:5字頭。
這些狀態(tài)代碼表示服務(wù)器在嘗試處理請求時發(fā)生內(nèi)部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯
eg.
500: 請求未完成。服務(wù)器遇到不可預(yù)知的情況。
502: 作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請求時,從上游服務(wù)器接收到無效的響應(yīng)。
503: 服務(wù)器臨時過載或當(dāng)機。
504: 網(wǎng)關(guān)超時。
獲取input標(biāo)簽中的good屬性值所用的函數(shù)是getAttribute("good")
用ajax方法,把請求返回的參數(shù)(格式是json)填充到table中,以表格形式列出
21號下午一道筆試題,因為需要聯(lián)系上文有點麻煩,大概講一下思路吧,主要是考察對jq的ajax函數(shù)還有其他一些jq函數(shù)的熟悉程度,我直接上代碼
var html = ""; $(function(){ $.ajax({ type:"post", url:".....", data:(忘了發(fā)送的參數(shù)是什么了,隨便寫一下){ a:111, b:222 }, dataType:json, success:function(data){ var res = jQuery.parseJSON(data); for(var i=0;i六、其他 1.遇到問題時怎么解決(錯誤日志)" + res[i].Time + " " + res[i].num + " "; } $("#table").html("" + html + "
"); }, error:function(){ } }) })
我回答的時候舉了做項目的時候的例子,先縷一下思路。因為后臺這一塊,只要思路縷清了,在紙上寫出來,接下來一步一步去debug,不斷var_dump、print_r、echo,最后exit()一下,其實很好debug
后來發(fā)現(xiàn)面試官想問的其實不是這個,而是錯誤日志,今天特意去搜了一下,研究了一個下午終于會一點點
首先開啟錯誤日志,配置php.ini
error_reporting = E_ALL ;將會向PHP報告發(fā)生的每個錯誤,包括ERROR、NOTICE、WARNING等等
display_errors = Off ;本地測試開啟,項目上線要關(guān)閉,防止服務(wù)器重要信息泄露
log_errors = On ;開啟錯誤日志
log_errors_max_len = 1024 ;設(shè)置每個日志項的最大長度
error_log = /www/phpernote/error.log ;指定產(chǎn)生的錯誤報告寫入的日志文件位置
配置完之后重啟服務(wù)器即可,參考了php的異常和處理文章的一小段代碼,自己另外做了測試
錯誤代碼:[{$errno}] {$errmsg}
".PHP_EOL; echo "錯誤行號:{$file}文件中的第 {$line} 行
".PHP_EOL; echo "PHP版本:".PHP_VERSION."(".PHP_OS.")
".PHP_EOL; $datetime = date("Y-m-d H:i:s",time()); error_log("時間:" . $datetime . "錯誤的信息:" . $errmsg . "錯誤文件所在位置:" . $_SERVER["SCRIPT_FILENAME"]); } echo $test; test(); echo "good"; ?>
下面是error.log輸出的內(nèi)容
網(wǎng)頁輸出的內(nèi)容:
手動分割線
在上面提到的內(nèi)容,其實有一些可以自己去拓展看一下的,比如提到innodb和myisam,前者是使用行鎖,后者是使用表鎖,那可以去拓展一下,什么是表鎖什么事行鎖,逐漸增大自己的知識面
先更新到這,明天還得去招聘會碰壁...
2017/03/18
先寫到這里。前兩天跑了廣工招聘會,今天有一家聯(lián)系明天面試了 ,繼續(xù)去撞壁...
2017/03/20
今天基本確定offer,去一家手游公司,實習(xí)期一天100,轉(zhuǎn)正后6K,包三餐,單雙休,上午九點上班,周五周六6點下班,平時都是到8點,8~8.5小時的工作時間,上班時間有點大,不過應(yīng)屆畢業(yè)生嘛,學(xué)歷也一般,其實這樣的工作強度加上薪資我覺得已經(jīng)是可以接受了。hr姐姐今天跟我說其實我筆試成績一般,面試不錯。希望實習(xí)期之間表現(xiàn)好一點,爭取能夠轉(zhuǎn)正吧,希望各位應(yīng)屆畢業(yè)生也能有一份好的offer,多去嘗試,學(xué)歷高的固然好,學(xué)歷低的也不要怕,多去跑一下招聘會宣講會,還是感謝一直鼓勵我去投其他公司的黑妹(男的),多嘗試,總會有機會的!昨天剛過完22歲生日,今天確定offer,明天五月天演唱會,一切來得剛剛好。切驕切燥,加油!
2017/03/24
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/22568.html
摘要:個人也建議不要滿足于自己當(dāng)下所知道的,多去拓展自己,多去學(xué)新的東西。作為一個面試者來說,知識點的記憶準(zhǔn)備為的是更好的應(yīng)對面試中技術(shù)面中問到的各種問題。 你好,是我琉憶——PHP程序員面試筆試系列圖書的作者。 隨著越來越多的人開始邁入PHP開發(fā)工程師的隊列,不管是一個PHP新手還是一個有一兩年開發(fā)經(jīng)驗的PHPer都不得不去面對找工作前面試這件事。 我現(xiàn)在以個人對面試的經(jīng)歷和見解來全面的對...
摘要:我今年月投遞了騰訊前端開發(fā)崗位,很可惜筆試題沒通過,小時內(nèi)給出答案回復(fù)面試官,我的答案太過于簡單,所以后面面試官估計也就懶得回我這個菜雞來嚶嚶嚶。 我今年4月投遞了騰訊前端開發(fā)崗位,很可惜筆試題沒通過,48小時內(nèi)給出答案回復(fù)面試官,我的答案太過于簡單,所以后面面試官估計也就懶得回我這個菜雞來(嚶嚶嚶)。當(dāng)然以我現(xiàn)在的眼光來重新看那份答案,都覺得那不應(yīng)該是一個一年的前端開發(fā)工作者給出的答...
摘要:如何考察一個人是不是經(jīng)驗豐富我們需要在問答式的面試中,對其項目經(jīng)驗進行挖掘。如何設(shè)置筆試題現(xiàn)在網(wǎng)上有大量的面經(jīng)的存在,對于我們面試是一個巨大的挑戰(zhàn)。尊重應(yīng)聘者我們要尊重每一個來應(yīng)聘的人,不要輕視別人,或者故意刁難別人。 時光荏苒,2個月前,我才剛總結(jié)了如何應(yīng)對面試官,現(xiàn)在的我開始總結(jié)如何面試別人了。笑哭.png 1.我們需要什么樣的人 招聘肯定要有標(biāo)準(zhǔn),這樣我們才能更快的找到我們需要的...
摘要:后續(xù)前端筆試題面試題記錄下小結(jié)我想說的是在找工作期間,肯定有自己發(fā)揮不好,或者不會的問題,一定要在晚上的時候自己再學(xué)習(xí)總結(jié)一下,在一個問題上面盡量不要栽倒兩次,學(xué)到了的才是自己的。 前言 過完元宵,就到上海找了波工作,現(xiàn)在已經(jīng)入職好了,蹭波熱點,寫一波面試記錄,內(nèi)容包含筆試題和面試題,還有一些沒有寫進來,準(zhǔn)備再開一篇,許久沒寫了,寫的確實有些慢。如果喜歡的話可以點波贊,或者關(guān)注一下,希...
閱讀 1136·2021-11-22 15:33
閱讀 3442·2021-11-08 13:20
閱讀 1483·2021-09-22 10:55
閱讀 2114·2019-08-29 11:08
閱讀 844·2019-08-26 12:24
閱讀 3145·2019-08-23 17:15
閱讀 2302·2019-08-23 16:12
閱讀 2012·2019-08-23 16:09