php小白面试(一)

技术人员笔试题

【智力部分】20分)

  1. 有一种细菌,经过一分钟分裂为2个,再过一分钟,分裂为4个,这样,将一个细菌放在一个瓶子里面,一个小时后瓶子被细菌充满了。现在假设一开始放入瓶中的为两个细菌,那么到充满瓶子要多长的时间?(10分)

由条件知:瓶子可放细菌个数为:$num=2的60幂个,当放入两个细菌时,2的n幂+2的n幂=$num;

化简得:2的n+1幂=$num=2的60幂,故n+1=60;n=59分钟

 

  1. 一只蜗牛从井底爬到井口,每天白天蜗牛要睡觉,晚上才出来活动,一个晚上蜗牛可以向上爬3尺,但是白天睡觉的时候会往下滑2尺,井深10尺,问蜗牛几天可以爬出来?(10分)

       第一天不下滑走了3尺,以后每天(3-2)尺    3+(n-1)=10    所以n=8天

 

【专业部分】75分)

  1. 谈谈你对MVC的认识,介绍几种目前比较流行的MVC框架?(5分)

由Model(M)、View(V)、Control(C)组成的一种设计模式,Model主要是一些业务处理类,View是页面显示页,直接在浏览器输出,Control是桥接M和V,由它接收到v的请求,调动相应的model类再把结果返回给视图,由视图输出给用户。

Smarty模板,phplib模板。。。。。。

  1. html表单中 GET与POST提交方法的区别?(5分)

GET提交方式是请求http协议,把要提交的值附在url后面,因此这种方式保密性不是很好,且还有长度限制,最长是8192字节。

POST是实体数据,随表单提交到服务器的,比较安全,且长度限制由配置文件决定。

  1. 请简述SESSION与COOKIE的区别?(5分)

SESSION:是存储用户信息的唯一全局变量,是在服务器端的预处理数组,存放的地方由php中的session_dir指定。

COOKIE:是用来存储连续访问一个页面时使用,数据存在客户端。这两者都可以通过时间设置生存长短。

默认情况下,session是基于cookie的,如果cookie被禁则必须向其他办法解决了。

  1. 求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数。(5分)

$time1=mktime(0,0,0,2,5,2007);

$time2=mktime(0,0,0,3,6,2007);

$time3=$time2-$time1;

相差秒数:$time3;

相差分钟:$time3/60;

相差小时: $time3/3600;

相差天数:$time3/3600/24;

相差周数:$time3/3600/24/7;

  1. 写出如下程序的输出结果 (5分)

<?

$test = 'aaaaaa';

$abc = & $test;

unset($test);

echo $abc;

?>

输出:aaaaaa

 

 

  1. 在空表News中,字段ID为自增主键,批量插入17条记录之后,发现最后三条数据有误,删除此三条记录后重启Mysql数据库,再重新插入三条记录,请问最后一条记录的ID值是多少?(5分)

Id 为 20

  1. 至少写出一种验证139开头的11位手机号码的正则表达式。(5分)

Reg1=“/^139\d{8}/”;

Reg2=“/^139[0-9]{8}/”;

 

 

  1. 请写一个函数,实现以下功能:

字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。(10分)

方法-:

Function cstr($str){

Echo str_replace(“ ”,””,ucwords(str_replace(“_”,” ”,$str)));

}

方法二:

Function cstr($str){

$arr=Explode(“_”,$str);

Foreach($arr as $v){

$nstr.=Ucwords($v);

}

Echo $nstr;

}

  1. 请写一个函数将1234567890转换成1,234,567,890 每3位用逗号隔开的形式。(10分)

方法一:Function new_number_formate($num){

$nnum=(string)$num;

$str= Strrev($nnum);

$count=strlen($str);

For($i=0;$i<$count;$i=$i+3){

$nstr.=Substr($str,$i,3).”,”;

}

Echo strrev(rtrim($nstr,”,”));

}

方法二:利用系统函数:number_formate($num,0,”.”,”,”)

  1. 有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 as a set a.c1=b.c1,a.c2=b.c2 left join B as b on a.id=b.id;

 

  1. 请用php写出以下程序:假设网络中有一台服务器192.168.1.101,开放端口8899进行侦听,请用php的socket相关知识,写出一个简易的client,连接到server,并发送字符串”hello server!”。程序仅对连接的成功和失败进行简易错误判断和处理即可。(10分)

<?php

$addr=”192.168.1.101”;

$port=8899;

If($socket=socket_create(AF_INET, SOCK_STREAM,TCP)<0){

Echo “创建失败,原因:”.socket_strerror($sock);

Return false;

}

If($bind=socket_bind($socket,$addr,$port)<0){

Echo “绑定错误,原因:”.socket_strerroe($bind);

Return false;

}

If($listen=socket_listen($socket,5)<0){

Echo “监听失败,原因:”.socket_strerror($listen);

Return false;

}

If($accept=socket_accept($socket)<0){

Echo “连接失败,原因:”.socket_strerror($accept);

Return false;

}

Socket_write($accept,“hello world ”,strlen(“hello world ”));

 

 

Socket_close($accept);

Socket_close($socket);

 

Linux知识】15分)

  1. 如何实现每天0点钟重新启动服务器。(5分)

写shell脚本:crontab 0 0 0 * * * /sbin/restart.sh

 

  1. 当前目录下有一个文件为 showme.sh , 如何修改文件,将其指定为使用 /bin/bash 运行(5分),如何修改其权限为所有用户可读写,所有用户可执行。(5分)

1、

2、chmod o+wr g+x showme.sh

 

  1. 当前目录下有一个文件为 showme.sh,如何修改其所有人为root。(5分)

Chown root ./showme.sh

 

【附加部分】40分)

  1. 使用thinkphp在控制器(Action)中传递一个一维数组到视图(Tpl),并将数组循环显示在前台页面,请简要的写出前后台的主要代码。(10分)

//控制器代码

<?php

Class show{

Function index(){

$arr=Array(“ggg”,”ghh”,”kkk”,”lll”,”rrr”,”yuyuu”);

$this->assign(“arr”,$arr);

$this->display();

}

}

 

//视图代码  ,分割标签是<{ }>

<volist name=”arr” id=”vo” key=”k”>

<{k}>=><{vo}>

</volist>

 

  1. 按照如图所示的window窗体,写出实现该窗体的ExtJs代码。(10分)

 

<html>

<head>

<!--这里有三个文件要导入,css文件一个,两个js库,在这里就不导入-->

<script>

Ext.onReady(function(){

Ext.QuickTips.init();

Var form=new Ext.FormPanel({

Frame:true,

Width:500,

monitorValid:true,

layout:”form”,

labelWidth:55,

title:”这是标题显示”,

labelAlign:”left”,

renderTo:Ext.getBody(),

submit:function(){

this.getEl().dom.action=”请求地址”,//

this.getEl().dom.method=”POST”,

this.getEl().dom.submit();

}

items:[{

xtype:”panel”,

layout:”column”,

fieldLabel:”用户名”,

isFormField:true,

items:[{

columnWidth:.5,

xtype:”textfield”,

allowBlank:false,

blankText:”不能为空,请填写”,

name:”username”,

anchor:”90%”

},{

labelAlign:”right”,

fieldLabel:”密码”,

columnWidth:.4,

xtype:”textfield”,

allowBlank:false,

blankText:”不能为空,请填写”,

name:”password”,

anchor:”90%”

 

}]

},{

Xtype:”panel”,

Layout:”column”,

fieldLabel:”公司名称”,

isFormField:true,

items:[{

columnWidth:.5,

xtype:””textfield,

allowBlank:false,

blankText:”请填写公司”,

name:”company”,

anchor:”90%”

 

},{

columnWidth:.5,

fieldLabel:”Email”,

xtype:”textfield”,

name:”email”,

allowBlank:false,

blankText:”请填写你的email”,

anchor:”90%”

}]

},{

Xtype:”htmleditor”,

fieldLabel:”内容”,

name:”content”,

anchor:”90%”

}],

Buttons:[{

Text:”保存”,

Handler:login,formBind:true

},{

Text:”取消”,

Handler:reset

}]

})

 

})

</script>

</head>

<body>

<div id=”show”></div>

</body>

</html>

 

 

3.请用php编写程序,读取出www.baidu.com的首页的网页内容(仅html),并存入字符串 $str.(10分)

 

$str=file_get_contents(“www.baidu.com”);

 

 

  1. 请用php将上题中读取出的网页内容的<title>标签的值解析出来。(10分)

$reg=’/<title>(.*?)<\/title>/’;

Preg_match($reg,$str,$m);

Var_dump($m);

 

5、javascript的ajax请求

<script>

Var Ajax;

If(XMLHttpRequest){

Ajax=new window.XMLHttpRequest();

}elseif(window.ActiveXObject){

Ajax=new window.ActiveXObject(“Microsoft.XMLHTTP”);

}else{

Alert(“不支持异步加载”);

Return false;

}

//选择传送方式

Ajax.open(“post”,”url”);

//请求状态发生改变时执行的动作

Ajax.onreadystatechange=function(){

Switch(Ajax.readystate){

Case 0:

Case 1:

Case 2:

Case 3:

Alert(“提示信息自己定义”);

Break;

Case 4:

If(Ajax.status==400){

//成功就把发回来的值加载到对应位置

getElementById(“show”).innerHTML=Ajax.response.text;

}else{

Alert(“请求失败”);

}

}

}

//post传值时必须设置下面一步

Ajax.setRequestHeader(‘Content-Type’,’application/x-www-form-urlencoded’);

//发送数据。如果为get传值时设置为null

Ajax.send(data);

 

</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值