|
楼主 |
发表于 2008 年 3 月 17 日 16:49:03
|
显示全部楼层
一、问答题
1. 对Php描述,哪个一个是错误的?
A 脚本嵌入语言 B 面向对象的语言 C: 解释型的 D:编译型的
答:D
2. 请描述include 和require的不同点。而include_once 和require_once呢?
答:include 和require的区别仅在他们的处理错误方法上, 。include() 产生一个警告而 require() 则导致一个致命错误.require多用来加载类/函数集合等.include则进行的是动态包含.
Include_once 和require_once都只是进一步告诉php引擎仅加载/包含一次
3. Php的注释有那几种类型?
答:
1. //
2. #
3. /**
**/
4. Php的超级全局变量有那些?
答:$GLOBALS, $_SERVER, $_GET, $_POST, $_COOKIE, $_ENV,$_REQUEST $_SESSION $_FILES
5. PHP代码中函数前面的@是什么意思?
答:错误抑制符,抑制错误不显示
6. 页面之间变量传递有那几种方式?
答: $_GET, $_POST, $_COOKIE,$_REQUEST $_SESSION
7. 随着web2.0的流行,AJAX技术也更广泛的运用,请写出若干个相关的javascript库。
答: 1.jquery
2.prototype
3.ext
4. jsLINB
5.YUI [Yahoo的]
答对俩个即可.
8. 如何加强web应用安全性?结合php特点和自己实际进行描述。请从运行环境,php模块配置,自身代码级别分别进行描述.
答:1.php.ini配置,如过滤全局变量,错误显示
2.服务器访问权限配置等
3.过滤传参,对变量做严格过滤
9. 你是如何调试php程序的?纯手工调试的话请写出最少三个函数. 使用工具的话请写出至少一个调试工具或模块
答:首先配置php.ini的错误报告,该配置可在代码文件中配置即可. error_reporting()
函数
手工:echo ,var_dump(), print_r(); 辅助 exit();die();
工具/模块:xdebuger, zend debuger
10. 模板引擎技术是实现页面与代码分离的技术,请写出你所知的模板引擎技术;概括性的阐述模板引擎技术的一般核心实现方式.你还记得php官方推荐的模板引擎技术是什么吗?如果知道请出相关函数
答:
参考:
模板引擎:smarty phplib Template Lite XTemplate XTemplate [答对一个即可]
原理:特定内容替换
官方推荐:HEREDOC 技术,涉及函数 eval()和 Print <<< EOF
EOF;
二、PHP程序
1.写出以下程序的输出结果
<?
$b=201;
$c=40;
$a=$b>$c?4:5;
echo $a;
?>
答:4
2. 写出以下程序的输出结果
<?
$str="cd";
$$str="hotdog";
$$str.="ok";
echo $cd;
?>
答:hotdogok
3. 请写一段php代码用尽量多的办法实现一个字符串反转,例如:12345678 反转:87654321。代码风格可按您的习惯和喜欢的方式编写。
答:
1. $a=123456789;
$b=Strrev($a);
Echo $b;
2. For($i=1;$i<=strlen($a);$i++){
Echo substr($a, -$i,1);
}
3.在2的基础上使用array_flip反转数组
三、PHP文件操作
1. 上述内容管理系统:用户提交内容后,系统生成静态HTML页面;写出实现的基本思路。
答:参考:提交内容程序读取模板文件-替换模板文件中的变量--写入一个符合预定义规则的文件中,没有则新建
2) 当上传文件后,php代码如何进行进行操作的和文件存储的.写出最简单的例子即可
答:
参考:
$upfile='/uploads/'.$_FILES['userfile']['name'];
if(is_uploaded_file($_FILES['userfile']['tmp_name']))
{
if(!move_uploaded_file($_FILES['userfile']['tmp_name'],$upfile)){
echo'不能转移文件!';
exit;
}
}
四、PHP/MySQL相关
1. 某内容管理系统中,表message有如下字段
id 文章id
title 文章标题
content 文章内容
category_id 文章分类id
hits 点击量
创建上表,写出MySQL语句
答:
最简单的,无需考虑主键索引的代码
CREATE TABLE `message` (
`id` INT( 10 ) NOT NULL ,
`title` VARCHAR( 254 ) NOT NULL ,
`content` TEXT NOT NULL ,
`category_id` INT( 10 ) NOT NULL ,
`hits` INT( 24 ) NOT NULL
) ENGINE = MYISAM ;
2. 同样上述内容管理系统:表comment记录用户回复内容,字段如下
comment_id 回复id
id 文章id,关联message表中的id
comment_content 回复内容
现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面:
文章id 文章标题 点击量 回复数量
答:
参考:Select m.id, m.title,m.hits,sum(c.id) from message as m, comment as c where c.id=m.id group by m.title order by c.id desc.
3. 假定有a,C 俩个表,每个表都有一个key字段,用left join写一sql语句,当C,a中的key相等视,a 做关联进C.
答:
参考: SELECT * FROM a LEFT JOIN c ON (c.key=a.key)
4.存在多索引的情况下,在sql中 明确指定使用索引 indexname.就此写一条语句.
答select * from b use index(indexname) where ……
5.存在group by查询结果的情况下,且数据量为大数据数时,如500万条,这个时候你觉得该如何对性能调优? 以这条语句为例,假使记录为500万条:select * from b,c group by b.b ,c.c where ….
答:参考:建立一索引bc,索引列为b.b ,c.c ,并在form子句中明确使用force index(索引名). Sql 应如
select * from b,c force index(bc) group by b.b ,c.c where …. |
|