2007年11月28日星期三

PHP面试题笔试题集锦

面试题1
1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21
echo date('Y-m-d H:i:s', strtotime('-1 day'));
2、echo(),print(),print_r()的区别
echo是语言结构,无返回值;print功能和echo基本相同,不同的是print是函数,有返回值;print_r是递归打印,用于输出数组对象
3、能够使HTML和PHP分离开使用的模板
so much,其实PHP本身就是一种模版引擎,我用过的是smarty,常见的还有PHPLib,FastTemplate,Savant
4、如何实现PHP、JSP交互?
题目有点含糊不清,SOAP,XML_RPC,Socket function,CURL都可以实现这些,如果是考PHP和Java的整合,PHP内置了这种机制(如果考PHP和.NET的整合,也可以这么回答), 例如$foo = new Java('java.lang.System');
5、使用哪些工具进行版本控制?
CVS和SVN,SVN号称下一代CVS,功能强大,不过CVS是老牌,市占率很高.我一直用SVN,题目是问用什么工具呃,这个可能需要这么回答:CVS Server on Apache作服务端,WinCVS作客户端;Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端,或者Subclipse做客户端.
6、如何实现字符串翻转?
用strrev函数呗,不准用PHP内置的就自己写:
function strrev($str)
{
$len=strlen($str);
$newstr = '';
for($i=$len;$i>=0;$i--)
{
$newstr .= $str{$i};
}
return $newstr;
}
7、优化MYSQL数据库的方法。
高考政治题,把你知道的知识点都写上吧.我的答案:
(1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),允许部分数据冗余,避免JOIN操作,以提高查询效率
(2).系统架构设计方面,表散列,把海量数据散列到几个不同的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master
(3).(1)和(2)超越PHP Programmer的要求了,会更好,不会没关系.检查有没有少加索引
(4).写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每一个sql语句
(5).所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,select count(*) ... where article_id = 就可以了,不要先select * ... where article_id = 然后msql_num_rows.只传送必须的SQL语句,比如修改文章的时候,如果用户只修改了标题,那就update ... set title = where article_id = 不要set content = (大文本)
(6).必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAP可以提高一个数量级的查询速度.
8、谈谈事务处理
如同是个编程语言都会有答应Hello World的例子一样,是本数据库的教材都会讲A给B的账户转账50美元的例子,回答这个就好了.不过据我所知,用MySQL的企业,很少用MySQL来实现事务处理.何况现在Oracle收购了InnoDB的公司.
9、apache+mysql+php实现最大负载的方法
参见第七题的答案,那个地方搞好了这个问题就迎刃而解了.
10、实现中文字串截取无乱码的方法。
哈哈哈,我猜出题的人是不是被substr的中文处理问题烦恼很久了,是不是还用了网上流传的用正则匹配中文字符然后截取的函数,其实,有非常简单的解决方法:mb_substr()
面试题2
var $empty = '';
var $null = NULL;
var $bool = FALSE;
var $notSet;
var $array = array();
1.$a = "hello";
$b = &$a;
unset($b);
$b = "world";
what is $a 结果 hello
2.$a = 1;
$x = &$a;
$b = $a++;
what is $b 结果1
3.$x = empty($array);
what is $x true or false 结果 1
4.您是否用过版本控制软件 如果有您用的版本控制软件的名字是
5.您是否用过模板引擎 如果有您用的模板引擎的名字是
6.请简单阐述您最得意的开发之作.
7.对于大流量的网站,您采用什么样的方法来解决访问量问题
8.用PHP写出显示客户端IP与服务器IP的代码:
function get_client_ip()
{
if(getenv('HTTP_CLIENT_IP'))
{
$client_ip = getenv('HTTP_CLIENT_IP');
}
elseif(getenv('HTTP_X_FORWARDED_FOR'))
{
$client_ip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif(getenv('REMOTE_ADDR'))
{
$client_ip = getenv('REMOTE_ADDR');
}
else
{
$client_ip = $HTTP_SERVER_VAR['REMOTE_ADDR'];
}
return $client_ip;
}
function iptype1 () {
if (getenv("HTTP_CLIENT_IP")) {
return getenv("HTTP_CLIENT_IP");
}
else {
return "none";
}
}
function iptype2 () {
if (getenv("HTTP_X_FORWARDED_FOR")) {
return getenv("HTTP_X_FORWARDED_FOR");
}
else {
return "none";
}
}
function iptype3 () {
if (getenv("REMOTE_ADDR")) {
return getenv("REMOTE_ADDR");
}
else {
return "none";
}
}
function ip() {
$ip1 = iptype1();
$ip2 = iptype2();
$ip3 = iptype3();
if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") {
return $ip1;
}
elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") {
return $ip2;
}
elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") {
return $ip3;
}
else {
return "none";
}
}
echo ip();
面试题3
一、PHP/MySQL编程
1) 某内容管理系统中,表message有如下字段
id 文章id
title 文章标题
content 文章内容
category_id 文章分类id
hits 点击量
创建上表,写出MySQL语句
2)同样上述内容管理系统:表comment记录用户回复内容,字段如下
comment_id 回复id
id 文章id,关联message表中的id
comment_content 回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面
文章id 文章标题 点击量 回复数量
用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0
3) 上述内容管理系统,表category保存分类信息,字段如下
category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;
用户输入文章时,通过选择下拉菜单选定文章分类
写出如何实现这个下拉菜单
二、PHP文件操作
1)上述内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路
2) 简单描述用户修改以发布内容的实现流程和基本思路
三、PHP程序
1) 写出以下程序的输出结果
$b=201;
$c=40;
$a=$b>$c 4:5;
echo $a;
>结果4
2) 写出以下程序的输出结果
$str="cd";
$$str="hotdog";
$$str.="ok";
echo $cd;
>结果hotdogok
面试题4
一. 简答题
1. 请说明php中传值与传引用的区别。什么时候传值什么时候传引用?
2. 在PHP中error_reporting这个函数有什么作用?
3. 请写一个函数验证电子邮件的格式是否正确
4. 简述如何得到当前执行脚本路径,包括所得到参数。
说明:例如有一个脚本 www.domain.com,传给他的参数有参数1,参数2,参数3….传递参数的方法有可能是GET有可能是POST,那么现在请写出类似
http://www.domain.com/script.php

参数1=值1&参数2=值2..... 的结果
5.如何修改SESSION的生存时间.
6..有一个网页地址 http://www.domain.com/xxx.php,如何得到它的内容?

7. 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用php函数)
8. 请举例说明在你的开发过程中用什么方法来加快页面的加载速度。
二. 数据库设计题:
请设计一套图书馆借书管理系统的数据库表结构;可以记录基本的用户信息、图书信息、借还书信息;数据表的个数不超过6个;请画表格描述表结构(需要说明每个字段的字段名、字段类型、字段含义描述);
在数据库设计中应:
1. 保证每个用户的唯一性;
2. 保证每种图书的唯一性;每种图书对应不等本数的多本图书;保证每本图书的唯一性;
3. 借书信息表中,应同时考虑借书行为与还书行为,考虑借书期限;
4. 保证借书信息表与用户表、图书信息表之间的参照完整性;
5. 限制每个用户最大可借书的本数
6. 若有新用户注册或新书入库,保证自动生成其唯一性标识
7. 为以下的一系列报表需求提供支持:(无特定说明,不需编写实现语句,而需在数据库设计中,保证这些报表可以用最多一条SQL语句实现)
a) 日统计报表:当日借书本数、当日还书本数报表;
b) 实时报表:
i. 当前每种书的借出本数、可借本数;
ii. 当前系统中所有超期图书、用户的列表及其超期天数
iii. 当前系统中所有用户借书的本数,分用户列出(包括没有借书行为的用户);请编写实现此需求的
SQL语句:
数据库应用:
请撰写一系列的SQL语句,分别描述完整的借书行为与还书行为;并保证这一系列的SQL语句的执行完整性下题是测验能力之最重要测试,如不能完成我们将无法给出评判结果!所以请写出详细的回答,并保证答案是可以执行的程序。在两日内将结果通过电子邮件寄到hr@88keke.com邮箱
结合第二题中你的设计,用一种数据库实现,要求使用三层结构或者多层结构,要求采用面向对象的思想进行编程,有可能的话,设计一套模板机制来实现之。
功能:列出当前借出图书的情况 ,按日期排列
编号 用户姓名 书名 书的编号 借出日期
1. 张进 大染坊 12576587 2004-9-1
2. 刘兴 西游记 32131098 2004-9-2
……
面试题5
1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的URL记录在预定义变量(2)中。
echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"];
2.执行程序段将输出(3)。
0
3.在HTTP 1.0中,状态码 401 的含义是(4);如果返回"找不到文件"的提示,则可用 header 函数,其语句为(5)。
(4)未授权 (5) header("HTTP/1.0 404 Not Found");
4.数组函数 arsort 的作用是(6);语句 error_reporting(2047)的作用是(7)。(6)对数组进行逆向排序并保持索引关系 (7)All errors and warnings
5.PEAR中的数据库连接字符串格式是(8)。
6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):(9)。
/<script[^>].* >.* </script>/si
7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(10)动态装载PHP模块,然后再用语句(11)使得Apache把所有扩展名为php的文件都作为PHP脚本处理。
(10)LoadModule php5_module "D:/xampp/apache/bin/php5apache2.dll"
(11) AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml
8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是(12);为了避免多次包含同一文件,可以用语句(13)来代替它们。
(12) 发生异常时include产生警告require产生致命错误 (13) require_once()/include_once()
9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是(14)。
serialize() /unserialize()
10.一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on.
allow_call_time_pass_reference
11.SQL 中LEFT JOIN的含义是(16)。如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句(17)。
(16) 自然左外连接
(17) select name , count(score) as sum_score from tbl_user left join tbl_score on tbl_user.ID=tbl_score.ID group by tbl_user.ID
12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须(18)。
结束标识符所在的行不能包含任何其它字符除";"
13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
/**
* 遍历目录,结果存入数组。支持php4及以上。php5以后可用scandir()函数代替while循环。
* @param string $dir
* @return array
*/
function my_scandir($dir)
{
$files = array();
if ( $handle = opendir($dir) ) {
while ( ($file = readdir($handle)) !== false ) {
if ( $file != ".." && $file != "." ) {
if ( is_dir($dir . "/" . $file) ) {
$files[$file] = rec_scandir($dir . "/" . $file);
}else {
$files[] = $file;
}
}
}
closedir($handle);
return $files;
}
}
14.简述论坛中无限分类的实现原理。
15.设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示。
面试题6
有一表 menu(mainmenu,submenu,url),请用递归法写出一树形菜单,将所有的menu列出来。
面试题7
1- 给你三个数,写程序求出其最大值。
2- 谈谈asp,php,jsp的优缺点
3- 谈谈对mvc的认识
4- 写出发贴数最多的十个人名字的SQL,利用下表:
members(id,username,posts,pass,email)
面试题8
1-如何通过javascript判断一个窗口是否已经被屏蔽。
2-写出session的运行机制
3-有一数组 $a=array(4,3,8,9,2);请将其重新排序,按从小到大的顺序列出。
4-防止SQL注射漏洞一般用_____函数。
5-查询在线人数,并能处理异常掉线的SQL....WHERE ________
面试题9
第一个题目写一个双表关联的左联查询,没啥说的
第二个题目 发我一张纸和一个笔 写sql语句,建立一个数据表,考验下是否手写熟练,连接主机,选择数据库,形成sql语句,送出后判断是否ok.这里他题目出了3个字段,500,很大,选text,还有就是时间 选整形长度10
然后是第3个题目
他在白纸上写了两行字
6 1+2+3=6
28 1+2+4+7+14=28
然后他说 1,2,3能被6整除 然后加起来是6.
1,2,4,7,14,都能被6整除,然后加起来28.
找出100000所有有这样特性的数........................
面试题10
1、使用php写一段简单查询,查出所有姓名为"张三"的内容并打印出来
表名User
Name Tel Content Date
张三 13333663366 大专毕业 2006-10-11
张三 13612312331 本科毕业 2006-10-15
张四 021-55665566 中专毕业 2006-10-15
请根据上面的题目完成代码:
$mysql_db=mysql_connect("local","root","pass");
@mysql_select_db("DB",$mysql_db);
3、如何使用下面的类,并解释下面什么意思
class test{
function Get_test($num){
$num=md5(md5($num)."En");
return $num;
}
}
4、用javascipt打印 "上海爱吉"
5、写出 SQL语句的格式 : 插入 ,更新 ,删除
6、谈谈对你PHP认识或你擅长的技术?

没有评论: