PHP面试提及部分答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.您是否用过版本控制软件? 如果有您用的版本控制软件的名字是? CVS:winCVS,是一个 CVS 的客户端 VSS,微软的产品,比较适合中小型项目,只支持单人 checkout
5.您是否用过模板引擎? 如果有您用的模板引擎的名字是? SMARTY,php 官方推荐的模板引擎,它是编译型模板,与 phplib 不太相同,功能强大,30 多种标签, 支持 cache
chr(0) function GBsubstr($string, $start, $length) {
if(strlen($string)>$length){ $str=null; $len=$start+$length; for($i=$start;$i<$len;$i++){ if(ord(substr($string,$i,1))>0xa0){ $str.=substr($string,$i,2); $i++; }else{ $str.=substr($string,$i,1); } } return $str.'...'; }else{ return $string; } }
} print("</select>"); }
二、PHP 文件操作
1) 上述内容管理系统:用户提交内容后,系统生成静态 HTML 页面;写出实现的基本思路 ob_start();
10、实现中文字串截取无乱码的方法。 这个首先要考虑字符集的问题,UTF-8 下一个汉字占 3 字节,GBK 下一个汉字占 2 字节.可以自 己写个函数来处理,别人也写了很多,当然也可以开启 mbstring 扩展库,使用里面的 mb_substr() 等函数来截取。当截取字符出现乱码时,是因为汉字被截断了,可以再字符串尾部连上一个
6.请简单阐述您最得意的开发之作. hdwiki,开源项目,mediawiki 的使用性国人很不适应,代码修改起来也比较困难.hdwiki 比较适 合目前的国人使用.
7.对于大流量的网站,您采用什么样的方法来解决访问量问题? 1 squid 反向代理
8、谈谈事务处理 可以控制并发操作所产生的数据同步提交、更新所带来的冲突问题.可以进行 comit,rollback 操作,数据的安全性得到了提高。
面试题 2 var $empty var $null var $bool var $notSet; var $array 1. $a = "hello"; $b = &$a; unset($b); $b = "world"; what is $a?
= ''; = NULL; = FALSE;
= array();
用一个 SQL 语句完成上述查询,如果文章没有回复则回复数量显示为 0
SELECT
message.id
id,message.title
title,IF(message.`hits`
IS
NULL,0,message.`hits`) hits,
IF(comment.`id` is NULL,0,count(*)) number FROM message LEFT JOIN
'id' int(10) NOT NULL auto_increment, 'title' varchar(200) default NULL,
'content' text, 'category_id' int(10) NOT NULL, 'hits' int(20), PRIMARY KEY('id'); )ENGINE=InnoDB DEFAULT CHARSET=utf8;
二. 数据库设计题: 请设计一套图书馆借书管理系统的数据库表结构;可以记录基本的用户信息、图书信息、借 还书信息;数据表的个数不超过 6 个;请画表格描述表结构(需要说明每个字段的字段名、 字段类型、字段含义描述);
在数据库设计中应: 1. 保证每个用户的唯一性; 2. 保证每种图书的唯一性;每种图书对应不等本数的多本图书;保证每本图书的唯一性; 3. 借书信息表中,应同时考虑借书行为与还书行为,考虑借书期限; 4. 保证借书信息表与用户表、图书信息表之间的参照完整性; 5. 限制每个用户最大可借书的本数 6. 若有新用户注册或新书入库,保证自动生成其唯一性标识 7. 为以下的一系列报表需求提供支持: (无特定说明,不需编写实现语句,而需在数据库设计中,保证这些报表可以用最多一条 SQL 语句实现) a) 日统计报表:当日借书本数、当日还书本数报表; b) 实时报表: i. 当前每种书的借出本数、可借本数; ii. 当前系统中所有超期图书、用户的列表及其超期天数 iii. 当前系统中所有用户借书的本数,分用户列出(包括没有借书行为的用户);请编写实现 此需求的 SQL 语句:
print("<select name='category' value=''>\n"); while($rowArray=mysql_fetch_array($result)) {
print("<option value='".$rowArray['category_id']."'>".$rowArray['categroy_name']."</option>\n ");
2 可以采取数据缓存的方法,我们通常在统计数据的时候,需要在原始数据的基础上经过计 算等一系列操作,才会得到最终的结果,如果每做一个查询都需要这样一系列操作,当数据 量大时,势必会带来很多问题。可以建立一个结果表,写一个脚本,用 crontab 定时触发脚 本去原始表取数据,计算,写入到结果表,前端查询从结果表取数据,这也是比较常用的一 种做法。
2) 简单描述用户修改以发布内容的实现流程和基本思路
三、PHP 程序
1) 写出以下程序的输出结果 <? $b=201; $c=40; $a=$b>$c?4:5; echo $a; ?>
2) 写出以下程序的输出结果 <? $str="cd"; $$str="hotdog"; $$str.="ok"; echo $cd; ?>
comment ON message.id=comment.id GROUP BY message.`id`;
3) 上述内容管理系统,表 category 保存分类信息,字段如下
category_id int(4) not null auto_increment; categroy_name varchar(40) not null;
用户输入文章时,通过选择下拉菜单选定文章分类
写出如何实现这个下拉菜单 function categoryList() {
$result=mysql_query("select category_id,categroy_name from category") or die("Invalid query: " . mysql_error());
for($length=0;$str[$length]!=null;$length++){;} $strlength = $length-1; unset($length);
for($start=0,$end=$strlength;$start<$end;$start++,$end--){ $temp = $str[$start]; $str[$start] = $str[$end]; $str[$end] = $temp; } unset($temp,$start,$end,$strlength); return $str; }
面试题 1 1、用 PHP 打印出前一天的时间格式是 2006-5-10 22:21:21 echo date("Y-m-d H:i:s",time()-(3600*24));或 echo date("Y-m-d H:i:s",strtotime("-1 day")); 2、echo(),print(),print_r()的区别 echo 可以接多个参数,print 只能接一个参数,它们都是 PHP 的语言结构,print_r 是递规打印,用 来打印数组或对象 3、能够使 HTML 和 PHP 分离开使用的模板 smarty,phplib,SmartTemplate 4、如何实现 PHP、JSP 交互? PHP 提供了支持 JAVA 的类库文件,或者通过 HTTP 协议来交互数据 5、使用哪些工具进行版本控制? VSS,CVS,SVN 6、如何实现字符串翻转? 不考虑中英文混合,不是最优算法,不用 php 库函数翻转字符串: function str_to_reverse( $str ){
2)同样上述内容管理系统:表 comment 记录用户回复内容,字段如下 comment_id 回复 id id 文章 id,关联 message 表中的 id comment_content 回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排 在最前面
文章 id 文章标题 点击量 回复数量
8.用 PHP 写出显示客户端 IP 与服务器 IP 的代码: echo $_SERVER['REMOTE_ADDR'] //客户端 ip echo $_SERVER['SERVER_ADDR'] //服务器端 ip
9、apache+mysql+php 实现最大负载的方法 1 问的太笼统,生成静态 html 页面,squid 反向代理,apache,mysql 的负载均衡。
-z]{2})?/i";
return preg_match($pregEmail,$email);
}
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. 请举例说明在你的开发过程中用什么方法来加快页面的加载速度。
3 采用分布式,多个 apache,多个 mysql,其实就是 dns 负载均衡,dns 根据当前用户解析 几个 ip 的 ping 值,将用户转移到某一台最快的服务器,或者平均分配。
4 money 不是问题的话,增加带宽和提升硬件性能也是一个选择!
面试题 3 一、PHP/MySQL 编程 1) 某内容管理系统中,表 message 有如下字段 id 文章 id title 文章标题 content 文章内容 category_id 文章分类 id hits 点击量 创建上表,写出 MySQL 语句 CREATE TABLE 'message'(
hello,unset($b)只是释放了$b 自己和$a 的别名关系,并不会释放$a
2. $a = 1; $x = &$a; $b = $a++; what is $b? 1,先执行$b = $a,$a++再进行,所以$b 还是 1
3. $x = empty($array); what is $x? true or false true,$array 是空数组
面试题 4
一. 简答题
1. 请说明 php 中传值与传引用的区别。什么时候传值什么时候传引用?
2. 在 PHP 中 error_reporting 这个函数有什么作用?
3. 请写一个函数验证电子邮件的格式是否正确
function checkEmail($email)
{
$pregEmail
=
"/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a
7、优化 MYSQL 数据库的方法。 1 将 where 中用的比较频繁的字段建立索引,联合索引。
2 保证单表数据不超过 200W,适时分割表。
3 避免使用ቤተ መጻሕፍቲ ባይዱ连接。
4 修改 my.cnf 里面的各项参数,比如最大连接数,查询缓存等。根据你的服务器内存来最 大化调节那些配置参数。
5 针对需求,使用正确的表引擎,是 myisam 或是 innodb。
相关文档
最新文档