【智力部分】(20分)
1.有一种细菌,经过一分钟分裂为2个,再过一分钟,分裂为4个,这样,将一个细菌放在一个瓶子里面,一个小时后瓶子被细菌充满了。现在假设一开始放入瓶中的为两个细菌,那么到充满瓶子要多长的时间?(10分)
59分钟
一个细菌的时候是2的60次方个细菌才把瓶子填满,两个细菌开始则是2*2的59次方,故结果是59分钟
2.一只蜗牛从井底爬到井口,每天白天蜗牛要睡觉,晚上才出来活动,一个晚上蜗牛可以向上爬3尺,但是白天睡觉的时候会往下滑2尺,井深10尺,问蜗牛几天可以爬出来?(10分)
8天或者7天加一夜
7天爬7尺,第七天晚上向上爬了3尺,已经爬出了井口,所以白天就没有再下滑2尺的动作
【专业部分】(75分)
3.谈谈你对MVC的认识,介绍几种目前比较流行的MVC框架?(5分)
由模型(model),视图(view),控制器(controller)完成的应用程序
由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;
BroPHP,ThinkPHP,Zend,Yii
4.html表单中 GET与POST提交方法的区别?(5分)
a)GET是发送请求HTTP协议通过url参数传递进行接收,而POST是实体数据,可以通过表单提交大量信息.
b)GET传参会有大小的限制,因浏览器和操作系统的不同而不同。而POST传参理论上不受限,但是一般会人为设定。
c)POST安全性比GET高
5.请简述SESSION与COOKIE的区别?(5分)
a)session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放
cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。
6.求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数。(5分)
<?php
function get_days($date1,$date2){
$time1=strtotime($date1);
$time2=strtotime($date2);
return abs($time1-$time2)/86400;
}
echo get_days('2007-2-5','2007-3-6');
?>
7.写出如下程序的输出结果 (5分)
aaaaaa
8.在空表News中,字段ID为自增主键,批量插入17条记录之后,发现最后三条数据有误,删除此三条记录后重启Mysql数据库,再重新插入三条记录,请问最后一条记录的ID值是多少?(5分)
如果是innodb类型结果是17
如果是myisam类型,结果是20
9.至少写出一种验证139开头的11位手机号码的正则表达式。(5分)
‘/^139[0-9]{8}$/x’
‘/^139\d{8}/x’
10.请写一个函数,实现以下功能:
字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。(10分)
function diversion($str){
$arr=explode('_',$str);
foreach($arr as $v){
$res.=ucfirst($v);
}
return $res;
}
echo diversion('open_door');
echo diversion('make_by_id');
11.请写一个函数将1234567890转换成1,234,567,890 每3位用逗号隔开的形式。(10分)
Echo Number_format(1234567890);
12.有A(id,sex,par,c1,c2),B(id,age,c1,c2)两张表,其中A.id与B.id关联,现在要求写一条SQL语句,将B中age>50的记录的c1、c2更新到A表中统一记录中的c1、c2字段中。(10分)
Update A,B set A.c1=B.c1 ,A.c2=B.c2 where A.id=B.id and B.age>50;
13.请用php写出以下程序:假设网络中有一台服务器192.168.1.101,开放端口8899进行侦听,请用php的socket相关知识,写出一个简易的client,连接到server,并发送字符串”hello server!”。程序仅对连接的成功和失败进行简易错误判断和处理即可。(10分)
//***客户端代码 需要准备服务端代码才可执行下面
//***准备服务端端口
$service_port = 8899;
//***准备主机地址
$address = '192.168.1.101';
//***创建socket
//***协议***AF_INET 这是大多数用来产生socket的协议,使用TCP或UDP来传输,用在IPv4的地址
//***socket类型***SOCK_STREAM 这个协议是按照顺序的、可靠的、数据完整的基于字节流的连接。这是一个使用最多的socket类型,这个socket是使用TCP来进行传输。
//***公共协议***SOL_TCP 和 getprotobyname(“tcp”)函数一样的效果 使用公共协议名字来获取一个协议类型。在这里使用的是TCP公共协议,如果你想使用UDP或者ICMP协议,那么你应该把getprotobyname()函数的参数改为“udp”或“icmp”。
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
//***如果$socket创建失败 获取socket失败信息提示
if ($socket === false) {
echo "socket创建失败,原因: " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "socket创建成功<br />";
}
//***开始socket连接
//***$socket 已创建好的socket资源
//***$address 主机地址
//***$service_port 服务端端口
$result = socket_connect($socket, $address, $service_port);
//***判断是否连接成功
if($result === false) {
echo "socket连接失败: ({$result}) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
echo "socket连接成功<br />";
}
//***准备发送数据
$in='hello server!';
//***输出内容初始化
$out = "";
//***写数据到socket缓存
socket_write($socket, $in, strlen($in));
//***读取指定长度的socket数据
//***$socket 已创建好的socket资源
//***8192 读取内容的指定长度
while ($out = socket_read($socket, 8192)) {
//***输出读取到的内容
echo $out;
}
//***关闭socket连接
socket_close($socket);
【Linux知识】(15分)
14.如何实现每天0点钟重新启动服务器。(5分)
cd /opt/
vim re_server.txt
0 0 * * * service httpd restart
crontab re_server.txt
/sbin/service crond restart
15.当前目录下有一个文件为 showme.sh , 如何修改文件,将其指定为使用 /bin/bash 运行(5分),如何修改其权限为所有用户可读写,所有用户可执行。(5分)
16.当前目录下有一个文件为 showme.sh,如何修改其所有人为root。(5分)
chown root:root showme.sh
【附加部分】(30分)
1.使用thinkphp在控制器(Action)中传递一个一维数组到视图(Tpl),并将数组循环显示在前台页面,请简要的写出前后台的主要代码。(10分)
以BroPHP为例:
On.class.php://控制器
Class one{
Function two(){
$arr=array(1,2,3,4,5,6);
$this->assign(‘arr’,$arr);
}
}
Two.htm://模版文件 视图
<{foreach $arr as $v}>
<{$v@key}>->
<{$v}><br />
<{/foreach}>
2.请用php编写程序,读取出www.baidu.com的首页的网页内容(仅html),并存入字符串 $str.(10分)
$str=file_get_contents(‘http://www.baidu.com’);
3 请用php将上题中读取出的网页内容的<title>
标签的值解析出来。(10分)
$zz=’/<title>(.*?)<\/title>/ixums’;
preg_match_all($zz,$str,$res);
var_dump($res);