php面试题之某搜索引擎.docx
- 文档编号:7225608
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:9
- 大小:20.10KB
php面试题之某搜索引擎.docx
《php面试题之某搜索引擎.docx》由会员分享,可在线阅读,更多相关《php面试题之某搜索引擎.docx(9页珍藏版)》请在冰豆网上搜索。
php面试题之某搜索引擎
一、基础及程序题
1.写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组。
(提示:
不能使用系统已有函数,另外请仔细回忆以前学习过的基础知识)
2.实现一个字符串截取的函数,类似于substr,必须能够截取中文这种多字节编码。
假设每个中文也是一个字符,普通的数字、符号、字母也是一个字符。
(提示:
GB编码的中文字符高位范围是0x81-0xFE)
3.写一个遍历指定目录下所有子目录和子文件的函数(提示:
可以使用递归的方法)
4.写出匹配邮箱地址和URL的两个正则表达式。
类似下面的:
邮箱地址:
user_name.first@
URL地址:
(提示:
使用标准的正则表达式,就是PHP中preg_*类的正则处理函数能够解析的正则)
二、数据库技术题
1.写出三种以上MySQL数据库存储引擎的名称(提示:
不区分大小写)
2.说出你所知道的三种以上开源数据库的名称(提示:
想想目前国外流行的开源数据库)
3.MySQL数据库中的字段类型varchar和char的主要区别是什么?
那种字段的查找效率要高,为什么?
4.说出MySQL4.0和MySQL4.1版本的最主要的两个区别。
如果你使用过MySQL5,请说说MySQL5跟MySQL4的主要区别。
(后半题选作)
5.MySQL数据库基本的三个优化法则是什么?
(提示:
从服务配置、应用、开发角度考虑)
三、综合技术题
1.请使用JavaScript写出三种产生一个Image标签的方法(提示:
从方法、对象、HTML角度考虑)
2.请使用CSS样式,描述两种方法在当前列中只显示一个div对象
3.请描述出两点以上XHTML和HTML最显著的区别
4.出五种以上你使用过的PHP的扩展的名称(提示:
常用的PHP扩展)
5.了解MVC模式吗?
请写出三种以上目前PHP流行的MVC框架名称(不区分大小写)
6.写出15个以上你所知道的常用的Linux命令和它的功能
7.使用过Vim编辑器吗?
如果使用过,如何在vim里切分多个可视化窗口,包括横排和纵排。
(本题选作)
8.说说Linux下的find命令和grep命令的区别(本题选作)
9.请描述出七层网络模型的名称,由下到上(可以使用中文描述)
10.说说下面这些这些协议的全称和中文解释(提示:
都是工作在应用层)SMTP、POP3、HTTP、FTP、DNS
11.使用过Memcache缓存吗,如果使用过,能够简单的描述一下它的工作原理吗?
(本题选作)
12.请大致的说说Session的工作原理。
(提示:
与Cookie有相应的关系)
13.说说你所了解的搜索引擎包含那些技术?
(本题选作)
四、项目及设计题
1.一个Web开发团队开发中,大致说说你所了解的所有成员的分工合作情况
2.说说你做过的最得意的项目或者个人开发作品(可以是个人作品,也可以是合作项目)
3.假设给你5台服务器,请大致的描述一下,如何使用你所熟悉的开源软件,搭建一个日PV300万左右的中型网站
PHP程序员笔试题(参考答案)
五、基础及程序题(建议使用你擅长的语言:
C/C++、PHP、Java)
5.写一个排序算法,可以是冒泡排序或者是快速排序,假设待排序对象是一个维数组。
(提示:
不能使用系统已有函数,另外请仔细回忆以前学习过的基础知识)
//冒泡排序(数组排序)
functionbubble_sort($array)
{
$count=count($array);
if($count<=0)returnfalse;
for($i=0;$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;
}
//快速排序(数组排序)
functionquicksort($array){
if(count($array)<=1)return$array;
$key=$array[0];
$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); returnarray_merge($left_arr,array($key),$right_arr); } 6.实现一个字符串截取的函数,类似于substr,必须能够截取中文这种多字节编码。 假设每个中文也是一个字符,普通的数字、符号、字母也是一个字符。 (提示: GB编码的中文字符高位范围是0x81-0xFE) /** *截取字符串子串 (1)(GBK) * *@paramstring$str原始字符串 *@paramint$len需要截取字符串的长度 *@returnstring返回截取到的字符串 */ functionGBSubstr($str,$len){ $count=0; for($i=0;$i if($count==$len)break; if(preg_match("/[\x80-\xff]/",substr($str,$i,1)))++$i; ++$count; } returnsubstr($str,0,$i); } /** *截取字符串子串函数 (2)(GB) * *@paramstring$src源字符串 *@paramint$start开始截取的位置 *@paramint$length需要截取字符串的长度 *@returnstring返回截取的字符串 */ functionGBSubstr2($src,$start=0,$length=0){ $suffix=""; $len=strlen($src); if($len<=$length)return$src; $cut_length=0; for($idx=0;$idx<$length;$idx++){ $char_value=ord($src[$idx]); if($char_value<0x80||($char_value&0x40)) $cut_length++; else $cut_length=$cut_length+3; } $curstr=substr($src,0,$cut_length); preg_match('/^([\x00-\x7f]|.{3})*/',$curstr,$result); return $result[0]; } /** *中文字符串截取(3)(支持GB2312/GBK/UTF-8/BIG5) * *@paramstring$str要截取的字串 *@paramint$start截取起始位置 *@paramint$length截取长度 *@paramstring$charset字符串的字符集,包括有utf-8|gb2312|gbk|big5编码 *@parambool$suffix是否加尾缀 *@returnstring返回接续字符串的结果 */ functionCSubstr($str,$start=0,$length,$charset="gbk",$suffix=false){ if(function_exists("mb_substr")){ returnmb_substr($str,$start,$length,$charset); } $re['utf-8'] ="/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; $re['gb2312'] ="/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; $re['gbk'] ="/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; $re['big5'] ="/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"; preg_match_all($re[$charset],$str,$match); $slice=join("",array_slice($match[0],$start,$length)); if($suffix){ return$slice."…"; } return$slice; } 7.写一个遍历指定目录下所有子目录和子文件的函数(提示: 可以使用递归的方法) /** *递归的遍历一个指定目录 */ functiondir_all($path){ $handler=opendir($path); while(false! ==($tmp=readdir($handler))){ if(is_dir("$path/$tmp")){ if($tmp=="."|$tmp=="..")continue; echo$tmp." dir_all("$path/$tmp"); }else{ echo$tmp." } } } 8.写出匹配邮箱地址和URL的两个正则表达式。 类似下面的: 邮箱地址: user_name.first@ URL地址: (提示: 使用标准的正则表达式,就是PHP中preg_*类的正则处理函数能够解析的正则) 邮箱: /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/ URL: /^http: \/\/[\w]+\.[\w]+[\S]*/ 六、数据库技术题 6.写出三种以上MySQL数据库存储引擎的名称(提示: 不区分大小写) MyISAM、InnoDB、BDB(BerkeleyDB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB等等十几个引擎 7.说出你所知道的三种以上开源数据库的名称(提示: 想想目前国外流行的开源数据库) MySQL、SQLite、BDB(BerkeleyDB)、PostgreSQL、Firebird 8.MySQL数据库中的字段类型varchar和char的主要区别是什么? 那种字段的查找效率要高,为什么? Varchar是变长,节省存储空间,char是固定长度。 查找效率要char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长类型多了一个步骤,所以效率低一些 9.说出MySQL4.0和MySQL4.1版本的最主要的两个区别。 如果你使用过MySQL5,请说说MySQL5跟MySQL4的主要区别。 (后半题选作) MySQL4.1主要是比MySQL4.0多了子查询和字符编码的支持两个特点。 MySQL5增加的功能比MySQL4要更多,包括存储过程、视图、事务等等 10.MySQL数据库基本的三个优化法则是什么,除了增加硬件和带宽? (提示: 从服务配置、应用、开发角度考虑) (1)系统服务优化,把MySQL的key_buffer、cache_buffer、query_cache等增加容量 (2)给所有经常查询的字段增加适当的索引 (3)优化SQL语句,减少Ditinct、Group、Join等等语句的操作 七、综合技术题 14.请使用JavaScript写出三种产生一个Image标签的方法(提示: 从方法、对象、HTML角度考虑) (1)varimg=newImage(); (2)varimg=document.createElementById(“image”) (3)img.innerHTML=“ 15.请使用CSS样式,描述两种方法在当前列中只显示一个div对象 (1) 19999px;”>
\n";
\n";
(2) both;”>
16.请描述出两点以上XHTML和HTML最显著的区别
(1)XHTML必须强制指定文档类型DocType,HTML不需要
(2)XHTML所有标签必须闭合,HTML比较随意
17.出五种以上你使用过的PHP的扩展的名称(提示:
常用的PHP扩展)
MB_Sring、Iconv、Curl、GD、SHM、libxml、socket、MySQL、PDO等等
18.了解MVC模式吗?
请写出三种以上目前PHP流行的MVC框架名称(不区分大小写)
FleaPHP、ZendFramework、CakePHP、Symfony、Plite、php.MVC、PHPonTrax、Smutty等等
19.写出10个以上你所知道的常用的Linux命令和它的功能
Ls列目录
Cp复制
Rm删除
Mkdir建立目录
Cd 切换目录
Ps 查看进程
Top查看机器使用情况
20.使用过Vim编辑器吗?
如果使用过,如何在vim里切分多个可视化窗口,包括横排和纵排。
(本题选作)
横:
split(sp)
纵:
vsplit(vsp)
21.说说Linux下的find命令和grep命令的区别(本题选作)
Find:
按照文件名查找
Grep:
按照文件内容查找
22.请描述出OSI七层网络模型的名称,由下到上(可以使用中文描述)
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
23.说说下面这些这些协议的全称和中文解释(提示:
都是工作在应用层)
SMTP、POP3、HTTP、FTP、DNS
SMTP(SimpleMailTransferProtocol)简单邮件传输协议
POP3(PostOfficeProtocol3)邮局协议第3版
HTTP(HypertextTransferProtocol)超文本传输协议
FTP (FileTransferProtocol)文件传输协议
DNS (DomainNameSystemandDomainNameServiceprotocol)域名系统(服务)协议
24.使用过Memcache缓存吗,如果使用过,能够简单的描述一下它的工作原理吗?
(本题选作)
Memcahce是把所有的数据保存在内存当中,采用hash表的方式,每条数据又key和value组成,每个key是独一无二的,当要访问某个值的时候先按照找到值,然后返回结果。
Memcahce采用LRU算法来逐渐把过期数据清除掉。
25.请大致的说说Session的工作原理。
(提示:
与Cookie有相应的关系)
参考这里:
http:
//www.yuanma.org/data/2006/1128/article_1872.htm
26.说说你所了解的搜索引擎包含那些技术?
(本题选作)
爬虫(采集)、切词(分词)、索引(存储)、查询以及其他相关技术
八、项目及设计题
4.一个Web开发团队开发中,大致说说你所了解的所有成员的分工合作情况
PS:
自行判定
5.说说你做过的最得意的项目或者个人开发作品(可以是个人作品,也可以是合作项目)
PS:
自行判定
6.假设给你5台服务器,请大致的描述一下,如何使用你所熟悉的开源软件,搭建一个日PV300万左右的中型网站
PS:
自行判定
参考结构:
3台Web服务器,两台MySQL数据库服务器,采用Master/Slave同步的方式减轻数据库负载,Web服务器可以结合Memcahe缓存来减少负载,同时三台Web服务器内容一致,可以采用DNS轮训的方式来进行负载平衡
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- php 试题 搜索引擎