试卷

一 试题:http://blog.csdn.net/chinalinuxzend/archive/2009/05/11/4167319.aspx

有答案的 http://blog.csdn.net/beimuaihui/archive/2007/10/21/1836071.aspx

http://hi.baidu.com/qibaiyilang/blog/item/d954d40e72ba32c27bcbe1ad.html

http://hi.baidu.com/xmseo/blog/item/674951e7b0d4cb2db93820ca.html  这里的答案是最全的

1、echo print print_r的区别

2、用PHP打印出前一天的时间格式是2006-5-10 22:21:21

3、用PHP写出显示客户端IP与服务器IP的代码

4、如何实现字符串反转

5、优化数据库的方法

6、MYSQL取得当前时间的函数是?,格式化日期的函数是

7、实现中文字串截取无乱码的方法

8、对于大流量的网站你使用什么样的方法来解决访问量的问题

9、用PHP写出显示客户端IP与服务器IP的代码

10、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?

11、如何修改SESSION的生存时间

12、有一个网页地址, 比如PHP研究室主页: http://www.phpv.net/index.html,如何得到它的内容?

13、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为

14、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)

15、在PHP中error_reporting这个函数有什么作用?

17、简述如何得到当前执行脚本路径,包括所得到参数

18、mysql_fetch_row() 和mysql_fetch_array之间有什么区别? 

19、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别

20、取得查询结果集总数的函数是

21、$arr = array(’james’, ‘tom’, ’symfony’); 请打印出第一个元素的值

22、请将数组的值用’,'号分隔并合并成字串输出

23、执行程序段<?php echo (-8%)(2) ?>将输出__

24、数组函数 arsort 的作用是____;

25、写出一个正则表达式,过虑网页上的所有JS/VBS脚本(即把script标记及其内容都去掉)

$script="以下内容不显示:<script language='javascript'>alert('cc');</script>";
26、以Apache模块的方式安装PHP,在文件http.conf中首先要用语句____动态装载PHP模块,然后再用语句____使得Apache把所有扩展名为php的文件都作为PHP脚本处理。

27、类的属性可以序列化后保存到 session 中,从而以后可以恢复整个类,这要用到的函数是____。

28、SQL中LEFT JOIN的含义是____。如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句____。

32、编程题第二题考核的是正则

 

 

答案

1

echo 有点像语句,print有点像函数,

$some_var = null;
($some_var) ? print 'true' : print 'false'; rigth

($some_var) ? echo 'true' : echo 'false';wrong ,这是需要返回值的

print_r完全就是函数,可以打印出数据的详细信息,比如数组,对象

 

2

echo date('Y-m-d H:i:s',mktime(date("H"), date("i"), date("s"), date("m") , date("d")-1, date("Y")));

echo date('Y-m-d H:i:s', strtotime('-1 day'));

 

3

客户端

$_SERVER['REMOT_ADDR'];

服务器端

$_SERVER['SERVER_ADDR'];

gethostbyname("www.tupoe.com")

 

4 strrev

 

5 参见日记

 

6、

now() curdate() curtime()

date_formate(now, '%m-%d-$Y') -> 12-29-2008

 

7、

ord(substr($str,$i,1))>0xa0 使用这个来判断是否是中文字符,在ASCII中0xa0代表汉字的开始,如果成立则要最少截取两个字符

 

http://hi.baidu.com/renshengyixiaojian/blog/item/fa6f85d34a7d14d0a8ec9a73.html

 

8、参考日志 

 

9、$_SERVER[SERVER_ADDR] 服务器端的ip ;$_SERVER[REMOTE_ADDR] 客户端Ip

 

10、

include与require的区别就是当遇到丢掉文件等错误的时候include产生一个警告,而require会终止程序

include_once与require_once的区别同上

include与include_once的区别就是文件中的代码只被包含一次,避免函数重定义,变量重新赋值等问题

 

11、

session_start();

setcookie(session_name(),session_id(),time()+24*3600),还可以使用一个函数来处理

session_set_cookie_params(24*3600),必须在session_start()前调用
使用$_session['name'] = null 就可以定义一个session

setcookie(TestCookie,'value') ;  setcookie(TestCookie['a'],$value);

调用

echo $_COOKIE["TestCookie"];
echo 
$HTTP_COOKIE_VARS["TestCookie"
];

 

12 、file_get_contents('http://www.phpv.net/index.html'),如果有乱码使用iconv('gb2312','utf-8',$content)来处理

 

这道题引申到对session和cookie的理解问题,参见日记

 

13、没有授权,header("http/1.0 404 not found")

 

14、select username from members group by username order by count(-1) desc

15、设置php的报错级别并返回当前级别,error_reporting(0) 禁用,error_reporting(E_ALL) 报告所有错误

17、$_SERVER['SCRIPT_FILENAME'] 和 $_SERVER['QUERY_STRING']

18、mysql_fetch_row() 返回的是数字索引数组,mysql_fetch_array() 返回的是关联数组或数字数组,有三个参数,MYSQL_NUM同row,MYSQL_ASSOC 同mysql_fetch_assoc(),返回关联数组,MYSQL_BOTH 同 array

19、

int 整型 32位整数,char字符串类型 255个字符 ,varchar 字符串类型 最多255个字符,datetime 时间和日期数据类型 是date和time的结合体 2010-05-21 12:21:34 ,text字符串类型 可变长度 2的16次方-1个字符,多用于存储文本内容

char和varchar的区别是 char是固定长度,不可以存储开头和结尾的空格 ;varchar是可变化长度,在规定长度范围内,可以存储空格

20、mysql_num_rows() 引申出要学习其他的功能

21、array_shift($arr);

22、implode(',' , $arr);

23、-2

24、对数组进行逆序排列并保持索引关系

25、preg_match_all(" @<script[^>].*?>.*?</script>@si "," ",$str); s表示.可以代表换行符/n

26、LoadModule php5_module "c:/php/php5apache2.dll";AddType application/x-httpd-php .php

见参考手册》目录》II. 安装与配置》6. Windows 系统下的安装Microsoft Windows 下的 Apache 2.0.x

27、unserialize

28、自然左外连接

select A.id,sum(B.score) as sumscore
from tbl_user A left join tbl_score B
on A.ID=B.ID
group by A.id
http://hi.baidu.com/qloog/blog/item/ae358d7745d62617b151b9ee.html
   

 

二 试题:http://hi.baidu.com/snunix/blog/item/88d3fe11c43af218b8127b48.html

https://bbs.et8.net/bbs/archive/index.php/t-981563.html  有答案的

http://blog.csdn.net/qqww378155/archive/2011/05/05/6395916.aspx  腾讯试题的答案

 

 

1、请对POSIX风格和兼容Perl风格两种正则表达式的主要函数进行类比说明

3、php5中魔术方法有哪几个,请举例说明各自的用法

4、请写出让,并说明如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数?

5、PHP的垃圾收集机制是怎样的

7、用php实现一个双向队列

8、你用什么方法检查PHP脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在? 

 

答案

1

1.1 posix是UNIX遵循标准的。UNIX命令如grep,sed用的正则就是posix的

perl正则在posix的基础上进行扩展,实现了很多方便的功能,

举个例子,pers用/d表示数字,而posix用[0-9](早期的posix才用,新版的已经使用perl风格了);posix有类的概念,比如[:digit:]比配数字,perl原来没有,后来支持posix也有了。perl中a.*?b 和a.*b匹配的结果不一样,前者最小匹配,后者最大匹配,属于非贪婪模式。1.2 perl正则函数比ereg的效率要高 

1.3 perl风格支持posix风格不支持的语法,

比如非贪婪匹配

参见http://www.cnitblog.com/yemoo/archive/2006/06/22/12675.html 和 日志

 

断言和条件子模式

教程精选:正则表达式快速入门<三> http://www.jz123.cn/text/071317.html

 

常用的正则表达式

http://hi.baidu.com/gllin123/blog/item/e2a203a96cc10dbacb130c89.html

POSIX和Perl 区别  google搜索词

http://www.dnbcw.com/biancheng/php/nkvr215349.html

3、

clas test {

    prvate $_data = array():

    private $_val = null;

    private $_name = null;

    public $_set = 30;

 

    public function __construct($name) {

        $this->_name = $name

    }

    public function __get($valName) {

        echo 'error'.$valName

    }

 

    public function __set($na,$val) {

        $this->_data[$na] = $val;

    }

 

    public function __call($name,$arguments) {

        echo 'method =' . $name,'param = '. implode(',',$arguments); // $arguments是一个数组

    }

 

    public function __toString() {

        return $this->_name;

    }

 

    public function getName() {
        return $this->_name;

    }

    public function __clone() {
        $this->_name = "clone结果";

    }

 

    public function __sleep() {
        return array('name'); //不序列化val和data

    }

 

    public function __wakeup() {
        $this->_val = "val";

        // 还可以写一些数据库连接,等前期需要准备的步骤

    }

 

    public function __isset($name) {

        echo "$name not set" ;

    }

 

    public function __unset($name) {
        echo '';

    }

 

    public function __autoload($name) {
        require_once $name."php";

    }

}

 

$testObj = new test();

__get() 当试图获取一个非public属性值时,或试图读取未定义的变量时,$testObj->_val 这时会调用__get($valName) 方法

__set() 当试图设置一个非public属性值时,或试图设置未定义的变量时,$testOb->_setVal = 'aa' 将会调用__set()方法

__call() 当试图调用一个未定义的方法时,包括没有权限访问的方法,例如私有方法;$testObj->testMethod('bb','cc')

__toString() 返回的是表示对象的字符串信息,当使用echo ,print 对象是调用';例如 $obj = new test("string"); echo $obj 结果就是string

__clone() 重写原来的属性和方法,前一个对象的不变,在使用clone赋值给另一个变量时使用的;例如 $aa =new test("aa");

$aa->getName() -> aa, $bb = clone $aa; $bb-> getName() -> clone结果,$aa->getName() -> aa

__sleep() 在序列化对象前被调用,返回需要序列化的属性;例如 $aa = new test("aa");$bb = serialize($aa);序列化属性只会包含name

__wakeup() 在反序列化对象前被调用,预先准备数据;例如 上一个unserialize($bb) 则对象中的属性$val = 'val';

__isset($name) 在使用isset() 检测类变量是否定义时使用;例如$aa = new test("aa"); isset($aa->_noset);这时$_noset这个属性没有被定义,所以调用__isset($name) 方法 输出 _noset not set

__unset($name) 在使用unset的时候被调用,可用于unset数组中的某字段,参见手册 重载

__autoload($class_name) 自动加载对象

 

http://www.jz123.cn/text/2319266.html

http://blog.planetsidecn.com/2010/05/php%E4%B9%8B%E9%AD%94%E6%9C%AF%E6%96%B9%E6%B3%95/

参考手册 类与对象中的重载

 

4、

4.1 进入php的安装目录,找到php.exe文件

在Linux操作系统里,它被保存在PHP安装目录的bin/子目录下

执行php hello.php param1.parma2

4.2 命令行方式运行php脚本

http://blog.csdn.net/guoguo1980/archive/2008/03/13/2178525.aspx

 

$PHP_HOME/bin/php -r 'echo $argv[1];' hello
$PHP_HOME/bin/php hello.php hello

5、

当一个 PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中所有对象同时被销毁。

GC进程一般都跟着每起一个SESSION而开始运行的.gc目的是为了在session文件过期以后自动销毁删除这些文件. 

7、栈是先进后出,队列是先进先出,如果在数组中的就是array_unshift和array_pop对应的关系或array_push和array_shift对应的关系

8、

1.脚本执行时间,统计函数执行次数和具体时间进行分析,启用xdebug,使用WinCacheGrind分析。
2.数据库查询,mysql使用EXPLAIN分析查询,启用slow query log记录慢查询。

3、代码脚本里计时。
4、在线系统用strace跟踪相关进程的具体系统调用。

5、sql的explain(mysql),set autotrace trace only; set timing on; (oracle)然后看具体的执行计划,物理读和逻辑读,是否使用到合适索引,是否有阻塞锁存在。 是否返回合适尺寸的查询结果集。 通常还要看数据库设计是否合理,需求是否合理等。 

 

 

试卷:

http://www.mianwww.com/html/2011/03/7932.html

http://www.js4j.com/tech/php/587.html

http://www.hongxincao.com/archives/80.html

http://www.google.com.hk/search?hl=zh-CN&newwindow=1&safe=strict&biw=1020&bih=560&q=%E6%96%B0%E6%B5%AAphp%E9%9D%A2%E8%AF%95%E9%A2%98&revid=1848536300&sa=X&ei=5SK4Tb2YH4W8vgO3hvihAw&ved=0CGYQ1QIoAg

http://hi.baidu.com/snunix/blog/item/88d3fe11c43af218b8127b48.html

http://aweber.blogbus.com/logs/65639476.html 这个是有答案的,这个博客有很多可以了解的东西

这个算是比较好的

http://blog.csdn.net/chinalinuxzend/archive/2009/05/11/4167319.aspx

上面试题的答案

http://blog.csdn.net/yanjiee/archive/2009/11/28/4885781.aspx

http://fav100.info/archives/91/ 比较好,答案很全,相关文章也有很多面试题

http://www.phpzixue.cn/detail586.shtml   一份不错的php面试题(附答案)

https://bbs.et8.net/bbs/archive/index.php/t-981563.html

http://fav100.info/archives/220/   里面有很多试题

 

教程: 教程可以总结一些常用的东西,不用自己总结了
http://www.5idev.com/

http://www.jz123.cn/text/0827425.html 这个网站也很好

http://blog.csdn.net/beimuaihui/archive/2007/10/21/1836071.aspx  带有答案 

 

正则表达式

http://www.cnblogs.com/catprayer/archive/2010/10/04/1841998.html

 

sina

http://hi.baidu.com/linchaoqi/blog/item/4f83690fbcefb1206059f394.html

遇到过的一些php笔试题

http://www.cnblogs.com/xcp19870712/archive/2011/07/08/2101003.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值