- 相關(guān)推薦
2017年初級PHP程序員筆試題
即將面臨畢業(yè)的準畢業(yè)生們是不是在為工作發(fā)愁了?下面是百分網(wǎng)小編精心為大家整理的2017年初級PHP程序員筆試題,希望對大家有幫助,更多內(nèi)容請關(guān)注應屆畢業(yè)生網(wǎng)!
一、基礎(chǔ)及程序題(建議使用你擅長的語言:C/C++、PHP、Java)
1.寫一個排序算法,可以是冒泡排序或者是快速排序,假設待排序?qū)ο笫且粋維數(shù)組。(提示:不能使用系統(tǒng)已有函數(shù),另外請仔細回憶以前學習過的
基礎(chǔ)知識)
2.實現(xiàn)一個字符串截取的函數(shù),類似于substr,必須能夠截取中文這種多字節(jié)編碼。假設每個中文也是一個字符,普通的數(shù)字、符號、字母也是一個字
符。(提示:GB編碼的中文字符高位范圍是 x81-xFE )
3.寫一個遍歷指定目錄下所有子目錄和子文件的函數(shù)(提示:可以使用遞歸的方法)
4.寫出匹配郵箱地址和URL的兩個正則表達式。類似下面的:
郵箱地址:user_name.first@example.com.cn /
URL地址:http://www.example.com.cn/user_profile.php?uid=1
(提示:使用標準的正則表達式,就是PHP中preg_* 類的正則處理函數(shù)能夠解析的正則)
二、數(shù)據(jù)庫技術(shù)題
1.寫出三種以上MySQL數(shù)據(jù)庫存儲引擎的名稱(提示:不區(qū)分大小寫)
2.說出你所知道的三種以上開源數(shù)據(jù)庫的名稱(提示:想想目前國外流行的開源數(shù)據(jù)庫)
3.MySQL數(shù)據(jù)庫中的字段類型varchar和char的主要區(qū)別是什么?那種字段的查找效率要高,為什么?
4.說出MySQL 4.和MySQL 4.1版本的最主要的兩個區(qū)別。如果你使用過MySQL 5,請說說MySQL 5跟MySQL 4的主要區(qū)別。(后半題選作)
5.MySQL數(shù)據(jù)庫基本的三個優(yōu)化法則是什么?(提示:從服務配置、應用、開發(fā)角度考慮)
三、綜合技術(shù)題
1.請使用JavaScript寫出三種產(chǎn)生一個Image 標簽的方法(提示:從方法、對象、HTML角度考慮)
2.請使用CSS樣式,描述兩種方法在當前列中只顯示一個div對象
3.請描述出兩點以上XHTML和HTML最顯著的區(qū)別
4.出五種以上你使用過的PHP的擴展的名稱(提示:常用的PHP擴展)
5.了解MVC模式嗎?請寫出三種以上目前PHP流行的MVC框架名稱(不區(qū)分大小寫)ThinkPHP QeePHP YiiPHP
6.寫出15個以上你所知道的常用的Linux命令和它的功能
7.使用過Vim編輯器嗎?如果使用過,如何在vim里切分多個可視化窗口,包括橫排和縱排。(本題選作)
8.說說Linux下的find命令和grep命令的區(qū)別(本題選作)
9.請描述出七層網(wǎng)絡模型的名稱,由下到上(可以使用中文描述)
1.說說下面這些這些協(xié)議的全稱和中文解釋(提示:都是工作在應用層)SMTP、POP3、HTTP、FTP、DNS
11.使用過Memcache緩存嗎,如果使用過,能夠簡單的描述一下它的工作原理嗎?(本題選作)
12.請大致的說說Session的工作原理。(提示:與Cookie有相應的關(guān)系)
13.說說你所了解的搜索引擎包含那些技術(shù)?(本題選作)
四、項目及設計題
1.一個Web開發(fā)團隊開發(fā)中,大致說說你所了解的所有成員的分工合作情況
2.說說你做過的最得意的項目或者個人開發(fā)作品(可以是個人作品,也可以是合作項目)
3.假設給你5臺服務器,請大致的描述一下,如何使用你所熟悉的開源軟件,搭建一個日PV 3萬左右的中型網(wǎng)站
PHP程序員筆試題 (參考答案)
五、基礎(chǔ)及程序題(建議使用你擅長的語言:C/C++、PHP、Java)
5.寫一個排序算法,可以是冒泡排序或者是快速排序,假設待排序?qū)ο笫且粋維數(shù)組。(提示:不能使用系統(tǒng)已有函數(shù),另外請仔細回憶以前學習過的
基礎(chǔ)知識)
//冒泡排序(數(shù)組排序)
function bubble_sort($array)
{
$count = count($array);
if ($count <= ) return false;
for($i=; $i<$count; $i++){
for($j=$count-1; $j>$i; $j--){
if ($array[$j] < $array[$j-1]){
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
}
return $array;
}
//快速排序(數(shù)組排序)
function quicksort($array) {
if (count($array) <= 1) return $array;
$key = $array[];
$left_arr = array();
$right_arr = array();
for ($i=1; $i
if ($array[$i] <= $key)
$left_arr[] = $array[$i];
else
$right_arr[] = $array[$i];
}
$left_arr = quicksort($left_arr);
$right_arr = quicksort($right_arr);
return array_merge($left_arr, array($key), $right_arr);
}
6.實現(xiàn)一個字符串截取的函數(shù),類似于substr,必須能夠截取中文這種多字節(jié)編碼。假設每個中文也是一個字符,普通的數(shù)字、符號、字母也是一個字
符。(提示:GB編碼的中文字符高位范圍是 x81-xFE )
function GBSubstr($str, $len){
$count = ;
for($i=; $i
if($count == $len) break;
if(preg_match("/[/x8-/xff]/", substr($str, $i, 1))) ++$i;
++$count;
}
return substr($str, , $i);
}
function GBSubstr2($src, $start=, $length=){
$suffix="";
$len = strlen($src);
if ( $len <= $length ) return $src;
$cut_length = ;
for( $idx = ; $idx<$length; $idx++){
$char_value = ord($src[$idx]);
if ( $char_value < x8 || ( $char_value & x4 ) )
$cut_length++;
else
$cut_length = $cut_length + 3;
}
$curstr = substr($src, , $cut_length) ;
preg_match('/^([/x-/x7f]|.{3})*/', $curstr, $result);
return $result[];
}
function CSubstr($str, $start=, $length, $charset="gbk", $suffix=false){
if(function_exists("mb_substr")){
return mb_substr($str, $start, $length, $charset);
}
$re['utf-8'] = "/[/x1-/x7f]|[/xc2-/xdf][/x8-/xbf]|[/xe-/xef][/x8-/xbf]{2}|[/xf-/xff][/x8-/xbf]{3}/";
$re['gb2312'] = "/[/x1-/x7f]|[/xb-/xf7][/xa-/xfe]/";
$re['gbk'] = "/[/x1-/x7f]|[/x81-/xfe][/x4-/xfe]/";
$re['big5'] = "/[/x1-/x7f]|[/x81-/xfe]([/x4-/x7e]|/xa1-/xfe])/";
preg_match_all($re[$charset], $str, $match);
$slice = join("", array_slice($match[], $start, $length));
if($suffix) {
return $slice ."…";
}
return $slice;
}
7.寫一個遍歷指定目錄下所有子目錄和子文件的函數(shù)(提示:可以使用遞歸的方法)
function dir_all ( $path ) {
$handler = opendir($path);
while (false!==($tmp = readdir($handler))) {
if(is_dir( "$path/$tmp" )) {
if ($tmp=="." | $tmp=="..") continue;
echo $tmp."
/n";
dir_all ("$path/$tmp");
} else {
echo $tmp ."
/n";
}
}
}
8.寫出匹配郵箱地址和URL的兩個正則表達式。類似下面的:
郵箱地址:user_name.first@example.com.cn
URL地址:http://www.example.com.cn/user_profile.php?uid=1
(提示:使用標準的正則表達式,就是PHP中preg_* 類的正則處理函數(shù)能夠解析的正則)
郵箱://w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*/
URL:/^http:////[/w]+/.[/w]+[/S]*/
六、數(shù)據(jù)庫技術(shù)題
6.寫出三種以上MySQL數(shù)據(jù)庫存儲引擎的名稱(提示:不區(qū)分大小寫)
MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB 等等十幾個引擎
7.說出你所知道的三種以上開源數(shù)據(jù)庫的名稱(提示:想想目前國外流行的開源數(shù)據(jù)庫)
MySQL、SQLite、BDB(Berkeley DB)、PostgreSQL、Firebird
8.MySQL數(shù)據(jù)庫中的字段類型varchar和char的主要區(qū)別是什么?那種字段的查找效率要高,為什么?
Varchar是變長,節(jié)省存儲空間,char是固定長度。查找效率要char型快,因為varchar是非定長,必須先查找長度,然后進行數(shù)據(jù)的提取,比char定長
類型多了一個步驟,所以效率低一些
9.說出MySQL 4.和MySQL 4.1版本的最主要的兩個區(qū)別。如果你使用過MySQL 5,請說說MySQL 5跟MySQL 4的主要區(qū)別。(后半題選作)
MySQL 4.1 主要是比MySQL 4.多了子查詢和字符編碼的支持兩個特點。
MySQL5增加的功能比MySQL4要更多,包括存儲過程、視圖、事務等等
1.MySQL數(shù)據(jù)庫基本的三個優(yōu)化法則是什么,除了增加硬件和帶寬?(提示:從服務配置、應用、開發(fā)角度考慮)
(1)系統(tǒng)服務優(yōu)化,把MySQL的key_buffer、cache_buffer、query_cache等增加容量
(2)給所有經(jīng)常查詢的字段增加適當?shù)乃饕?/p>
(3)優(yōu)化SQL語句,減少Ditinct、Group、Join等等語句的操作
七、綜合技術(shù)題
14.請使用JavaScript寫出三種產(chǎn)生一個Image 標簽的方法(提示:從方法、對象、HTML角度考慮)
(1)var img = new Image();
(2)var img = document.createElement_xById(“image”)
(3)img.innerHTML = “
“
15.請使用CSS樣式,描述兩種方法在當前列中只顯示一個div對象
(1)
(2)
16.請描述出兩點以上XHTML和HTML最顯著的區(qū)別
(1)XHTML必須強制指定文檔類型DocType,HTML不需要
(2)XHTML所有標簽必須閉合,HTML比較隨意
17.出五種以上你使用過的PHP的擴展的名稱(提示:常用的PHP擴展)
MB_Sring、Iconv、Curl、GD、SHM、libxml、socket、MySQL、PDO 等等
18.了解MVC模式嗎?請寫出三種以上目前PHP流行的MVC框架名稱(不區(qū)分大小寫)
FleaPHP、Zend Framework、CakePHP、Symfony、Plite、php.MVC、PHP on Trax、Smutty 等等
19.寫出1個以上你所知道的常用的Linux命令和它的功能
Ls 列目錄
Cp 復制
Rm 刪除
Mkdir 建立目錄
Cd 切換目錄
Ps 查看進程
Top 查看機器使用情況
2.使用過Vim編輯器嗎?如果使用過,如何在vim里切分多個可視化窗口,包括橫排和縱排。(本題選作)
橫:split(sp)
縱:vsplit(vsp)
21.說說Linux下的find命令和grep命令的區(qū)別(本題選作)
Find:按照文件名查找
Grep:按照文件內(nèi)容查找
22.請描述出OSI七層網(wǎng)絡模型的名稱,由下到上(可以使用中文描述)
物理層、數(shù)據(jù)鏈路層、網(wǎng)絡層、傳輸層、會話層、表示層、應用層
23.說說下面這些這些協(xié)議的全稱和中文解釋(提示:都是工作在應用層)
SMTP、POP3、HTTP、FTP、DNS
SMTP (Simple Mail Transfer Protocol) 簡單郵件傳輸協(xié)議
POP3 (Post Office Protocol 3) 郵局協(xié)議第3版
HTTP (Hypertext Transfer Protocol) 超文本傳輸協(xié)議
FTP (File Transfer Protocol)文件傳輸協(xié)議
DNS (Domain Name System and Domain Name Service protocol) 域名系統(tǒng)(服務)協(xié)議
24.使用過Memcache緩存嗎,如果使用過,能夠簡單的描述一下它的工作原理嗎?(本題選作)
Memcahce是把所有的數(shù)據(jù)保存在內(nèi)存當中,采用hash表的方式,每條數(shù)據(jù)又key和value組成,每個key是獨一無二的,當要訪問某個值的時候先按照找到
值,然后返回結(jié)果。Memcahce采用LRU算法來逐漸把過期數(shù)據(jù)清除掉。
25.請大致的說說Session的工作原理。(提示:與Cookie有相應的關(guān)系)
參考這里:http://www.yuanma.org/data/26/1128/article_1872.htm
26.說說你所了解的搜索引擎包含那些技術(shù)?(本題選作)
爬蟲(采集)、切詞(分詞)、索引(存儲)、查詢以及其他相關(guān)技術(shù)
八、項目及設計題
4.一個Web開發(fā)團隊開發(fā)中,大致說說你所了解的所有成員的分工合作情況
PS: 自行判定
5.說說你做過的最得意的項目或者個人開發(fā)作品(可以是個人作品,也可以是合作項目)
PS: 自行判定
6.假設給你5臺服務器,請大致的描述一下,如何使用你所熟悉的開源軟件,搭建一個日PV 3萬左右的中型網(wǎng)站
PS:自行判定
參考結(jié)構(gòu):
3臺Web服務器,兩臺MySQL數(shù)據(jù)庫服務器,采用Master/Slave同步的方式減輕數(shù)據(jù)庫負載,Web服務器可以結(jié)合Memcahe緩存來減少負載,同時三臺Web服
務器內(nèi)容一致,可以采用DNS輪訓的方式來進行負載平衡
【初級PHP程序員筆試題】相關(guān)文章:
初級PHP程序員面試經(jīng)驗分享06-08
php程序員面試題10-13
普通PHP程序員筆試題及答案09-10
高級php程序員面試題07-10
php程序員面試題及答案10-21
常見的PHP中級程序員面試題08-27
PHP程序員面試題目整理09-30
PHP試題07-04
php程序員11-01