php面试2

来源:互联网 发布:tushare 保存到mysql 编辑:程序博客网 时间:2024/05/16 12:55
PHP面试题汇总-答案(转)
2008-12-30 16:10

补充题目答案:

面试题1
1、用PHP打印出前一天的时间格式是2006-5-10 22:21:21
print date('Y-m-d', time()-86400);

2、echo(),print(),print_r()的区别
echo语言结构, print/print_r是函数. print是一般性输出, print_r输出包含底层类型.

3、能够使HTML和PHP分离开使用的模板
?听不懂. smarty?

4、如何实现PHP、JSP交互?
...没用过jsp

5、使用哪些工具进行版本控制?
cvs, subversion

6、如何实现字符串翻转?
print strrev('abc');

7、优化MYSQL数据库的方法。
针对经常用到的关键列多做索引, explain

8、谈谈事务处理
事务处理是指连续性的动作不可被打断的过程, 事务处理失败会撤销相应的影响

9、apache mysql php实现最大负载的方法
...软件角度的提升, 不如硬件角度的提升来得快

10、实现中文字串截取无乱码的方法。
中文是gb2312还是utf8?gb2312和utf8特点判断下就可以了.

面试题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

true

4.您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?
是.cvs, subversion.

5.您是否用过模板引擎? 如果有您用的模板引擎的名字是?
是.smarty

6.请简单阐述您最得意的开发之作.
还没.一个人不够.想找合作者.

7.对于大流量的网站,您采用什么样的方法来解决访问量问题?
针对动态性不强的ye, 可以生成静态的; 交互性强的, 没多少办法, 我仍然相信性能角度投资软件不如投资硬件.

8.用PHP写出显示客户端IP与服务器IP的代码:
print $_SERVER['remote_addr'].$_SERVER['server_addr'];

面试题3
一、PHP/MySQL编程

1) 某内容管理系统中,表message有如下字段
id 文章id
title 文章标题
content 文章内容
category_id 文章分类id
hits 点击量

创建上表,写出MySQL语句
DROP TABLE IF EXISTS message;
CREATE TABLE IF NOT EXISTS message
(
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(200) NOT NULL DEFAULT '',
content TEXT,
category_id INT, #这里估计还要改, 暂时放下
hits INT,
PRIMARY KEY(id)
);
CREATE INDEX message_title_index ON message(title);

2)同样上述内容管理系统:表comment记录用户回复内容,字段如下
comment_id 回复id
id 文章id,关联message表中的id
comment_content 回复内容

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面

文章id 文章标题 点击量 回复数量
用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0

SELECT m.id, m.title, m.hits, count(comment_id) as total FROM message m LEFT JOIN comment ON (m.id=comment.id) GROUP BY(m.id) ORDER BY total DESC;

3) 上述内容管理系统,表category保存分类信息,字段如下

category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;

用户输入文章时,通过选择下拉菜单选定文章分类

写出如何实现这个下拉菜单

办法很多, 纯javascript(php取出所有分类), javascript/post/php, javascript/ajax/php...

二、PHP文件操作

1)
上述内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路
if (!file_exists($html_file))
{
ob_start();
$html = ob_get_contents();
file_put_contents($file, $html);
ob_end_clean;
}
header('Location: '.$html_file);
exit;

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. 请写一个函数验证电子邮件的格式是否正确
strpos('@', $str)

4. 简述如何得到当前执行脚本路径,包括所得到参数。
说明:例如有一个脚本 www.domain.com,传给他的参数有参数1,参数2,参数3….
传递参数的方法有可能是GET有可能是POST,那么现在请写出类似
http://www.domain.com/script.php? 参数1=值1&参数2=值2..... 的结果

http://$_SERVER['HTTP_HOST']$_SERVER['SCRIPT_NAME']?$_SERVER['QUERY_STRING']

5.如何修改SESSION的生存时间.
php -i | grep session

6..有一个网页地址 http://www.domain.com/xxx.php,如何得到它的内容?
print file_get_contents('http://www.domain.com/xxx.php');

7. 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用php函数)
算法问题不考虑. 要效率写c去.

8. 请举例说明在你的开发过程中用什么方法来加快页面的加载速度。
可以压缩输出, 我没用过.

二. 数据库设计题:
比较长...不写了

面试题5
1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中;而链接到当前页面的URL记录在预定义变量(2)中。
$_SERVER['PHP_SELF'] $_SERVER['HTTP_REFERER'];

2.执行程序段将输出(3)。
2

3.在HTTP 1.0中,状态码 401 的含义是(4);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(5)。
查查RFC就知道了. header('Status: ...');

4.数组函数 arsort 的作用是(6);语句 error_reporting(2047)的作用是(7)。
数组排序后反转并保持key相关. 开启全部出错输出, E_ALL

5.PEAR中的数据库连接字符串格式是(8)。
类似: mysql://user:pass@host/database

6.写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉):(9)。
$re = '|]*>(.*)|i';
$content = preg_replace($re, '$1', $content);

7.以Apache模块的方式安装PHP,在文件http.conf中首先要用语句(10)动态装载PHP模块,然后再用语句(11)使得Apache把所有扩展名为php的文件都作为PHP脚本处理。
LoadModule module_php5 modules/libphp5.so
AddType application/x-httpd-php .php

8.语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是(12);为了避免多次包含同一文件,可以用语句(13)来代替它们。

当文件不存在时, 一个warning, 一个error..............._once

9.类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是(14)。
unserialize

10.一个函数的参数不能是对变量的引用,除非在php.ini中把(15)设为on.
...

11.SQL 中LEFT JOIN的含义是(16)。如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句(17)。
SELECT u.name, SUM(s.score) AS total_score FROM tbl_user u LEFT JOIN tbl_score s ON (u.ID=s.ID) GROUP BY u.ID;

12.在PHP中,heredoc是一种特殊的字符串,它的结束标志必须(18)。
print <<i love this game.
EOF;

13.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹。
function list($dir)
{
foreach(glob(/"$dir/*.*/") as $file)
{<
R> if (is_file($file))
{
//do something
}
else if (is_dir($file))
{
list($file);
}
}
}

14.简述论坛中无限分类的实现原理。
无限分类是不可能的. 来个100层分类shu状显示看看.

15.设计一个网页,使得打开它时弹出一个全屏的窗口,该窗口中有一个文本框和一个按钮。用户在文本框中输入信息后点击按钮就可以把窗口关闭,而输入的信息却在主网页中显示。
window.open,
onClick=opener.close()

面试题6
有一表 menu(mainmenu,submenu,url),请用递归法写出一树形菜单,将所有的menu列出来。
showMenu($menu = 'mainmenu')
{
print $menu;
$sql = /"SELECT submenu FROM menu WHERE mainmenu=$menu/";
//get submenu into array $menus
foreach($menus as $menu)
{
showMenu($menu);
}
}
可以加个$level, 也可以把输出放到数组里

面试题7
1- 给你三个数,写程序求出其最大值。
print $a > $b ? ($a>$c ? $a : $c) : ($b>$c ? $b : $c);

2- 谈谈asp,php,jsp的优缺点
...

3- 谈谈对mvc的认识
...

4- 写出发贴数最多的十个人名字的SQL,利用下表:
members(id,username,posts,pass,email)
SELECT username, COUNT(posts) AS total_post FROM members GROUP BY id ORDER BY total_post DESC LIMIT 10;

面试题8
1-如何通过javascript判断一个窗口是否已经被屏蔽。
try...catch?

2-写出session的运行机制
放个cookie保存session_id, 在sessen.save_path里放个SESS_(session_id)的文件保存serialize过的数据

3-有一数组 $a=array(4,3,8,9,2);请将其重新排序,按从小到大的顺序列出。
sort($a);
print implode(/"/n/", $a);

4-防止SQL注射漏洞一般用_____函数。
sprintf, settype

5-查询在线人数,并能处理异常掉线的SQL
....WHERE ________bzd. 能/"处理异常掉线/", 没这么强的sql吧...

原创粉丝点击