Posts Tagged ‘php’

当年我做过的面试题目

Wednesday, April 23rd, 2008

刚刚看了老陈准备的考试题, 是做留言本的, 所以想起了我以前做的一套面试题.

个人觉得这套题还是不错的, geel花了不少心思出的, 题先发出来, 答案整理过后再跟上.

__ 1.php __

__ 试题 __

XHTML和CSS方面的问题不允许借用dreamweaver之类的工具。

一、php方面

1、打开1.php,在文件里写一个类Test实现ITest接口。(如果不会实现接口可以直接改写成类)
2、在当前目录下写一个文件 1-1.php,依次调用你刚才写的Test类的所有method。
3、上述代码(interface ITest)中,public修饰符是什么意思?同类修饰符还有哪些?各有什么意义?
4、上述代码中,function前面为什么要加static关键字?php的关键字和函数区别大小写吗?
4.1、文件 1.php 中不添加结尾的 “?>” 可以运行吗?不添加 “?>” 有什么作用吗?
5、=== 和 == 有什么区别?
6、引用的利弊?一般来说各自在什么情况下用?function如何返回引用?如何给一个function传递引用?
7、一个典型web程序(例如一个论坛)的性能瓶颈通常来说在什么地方?一般采用什么什么方法来提高执行效率?
8、一般用什么办法判断当前页面是用户 post而不是get?

二、XHTML和CSS以及javascript方面
9、简述两条w3c关于XHTML1.0的规范
10、访问过的超链接样式不再具有css里定义的hover和active了,问题的原因可能是?解决方法是?
答案::visited
11、定义一个层,用css实现下列样式:高200px,宽300px,其边框宽度为1px,边框颜色为红色,背景颜色为蓝色,文字颜色为白色,文字水平和垂直居中,文字大小14px,粗体
12、设有 <ul><li>aaa</li><li>bbb</li></ul>,用css使aaa和bbb显示在同一行上。
答案:display:inline;
13、onblur事件在什么时机被触发?
答案:失去焦点
14、请指出body是什么元素的子元素?
答案:document
15、设有如下HTML代码:
<input type=”text” id=”companyName” />
<p id=”company”></p>
<input type=”button” onclick=”setCompanyName()” value=”设置公司名” />
请完成 setCompanyName() 方法,使点击按钮的时候,将<p>中的文字设置为输入框中的文字。如果点击按钮时输入框里没有文字,弹出“请输入文字”的提示。
16、使用过哪些js类库?

三、其他部分
17、使用过哪些发行版本的Linux?喜欢他们的哪些地方?
18、在linux下面你一般用什么方法安装一个软件?
19、bash下面 ls -lah 代表什么意思?
19、rm -i 代表什么意思?rm -f 呢?
20、你用什么办法登录到一台 linux 主机?21、一个文件的权限为 764,表示什么意思?用什么命令将这个文件的权限改为 700?
22、FTP传输过程中binary和ascii模式有什么区别?
23、一个ftp服务器ip为1.2.3.4,端口为123,用户名是 andy,密码是 xyz,要求下载 movie 目录下的 1.rm,请写出可以直接下载这个文件的 URL
24、HTTP返回代码中404代表什么含义?302呢?
25、<script src=”a.js?0607″></script>,请问为什要写问号及其后面的内容?
答案:防止缓存
26、假设第1题中某一个方法你不知道怎么实现,一般情况下你会通过哪些途径来解决?

vForm ver1.3 build 20071207

Friday, December 7th, 2007

为了简化烦琐的javascript前端验证代码,

为了更好的通过w3c标准认证,

Oh yeah, vForm诞生了!

下载程序请直接拉到文章最后的附件部分.

什么是vForm?

vForm是一个php和一个javascript的结合, 再具体点说,vform由一个php类和一个javascript验证函数库组成, php的作用就是控制调用和生成javascript.

为什么开发vForm?

javascript验证是我们公司每个项目必须要做的工作, 为了避免反复写大量的javascript验证代码, 所以抽出了一些时间开发vForm.

vForm有多方便?

因为本人很懒, 所以需要程序一定要完成大部分工作.不说废话,上代码,看看vform如何完成一个表单验证. 注:需要将vform.php和vform.js放到同目录下.可以直接下载程序包,里面也有这个例子.

___________________simple.php____________________

<?php
/**
*   这是一个vfrom使用的一个离子.本例中为大家演示了各种验证规则
* 的使用和同页面多表单验证的实现方法.
*/
require_once(’vform.php’);
$config  = array(
array(”,’username’,’require’,’请输入帐号’),
array(’len’,’username’,’10′,’帐号不能超过10位’,’5′,’帐号不能少于5位’),
array(”,’pass’,’require’,’请输入密码’),
array(’len’,’pass’,’16′,’密码不能超过16位’,’6′,’密码不能少于6位’),
array(’s’,’repass’,’pass’,’两次输入的密码必须相同’),
array(”,’qq’,’number’,’QQ号码必须为数字’),
array(’len’,’qq’,’9′,’QQ号码不能超过9位’,’5′,’QQ号码不能少于5位’),
array(”,’phone’,’phone’,’电话号码由-和数字组成’),
array(”,’name’,’chinese’,’姓名必须是汉字’),
array(’len’,’name’,’4′,’这里不欢迎日本人’,’2′,’名字太短了’),
array(”,’ename’,’english’,’英文名必须是英文’),
array(’len’,’name’,’25′,’你是火星人么?’,’2′,’名字太短了’),
array(”,’age’,’number’,’年龄要是数字才行’),
array(”,’postcode’,’postcode’,’这个是邮政编码’),
array(”,’p’,’percent’,’一个百分比’),
array(”,’f’,’float’,’一个有理数,正负小数整数等等’),
array(”,’nc’,’nochinese’,’不能输入汉字’),
);
$config2  = array(
array(”,’username2′,’require’,’请输入帐号2′),
array(”,’pass2′,’require’,’请输入密码2′),
array(’s’,’repass2′,’pass2′,’两次输入的密码2必须相同’)
);
$vform   = new vform($config, ‘form1′);
$xform   = new vform($config2, ‘b_2′, ‘click’);
?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>vForm示例</title>
<style type=”text/css”>
*{
margin:0;
}
body,html{
font:12px;
text-align:center;
}
h1{
font:36px;
font-weight:bold;
text-align:left;
background:#ccc;
border-bottom:2px solid #666;
margin-bottom:10px;
}
form{
margin:10px;
}
img{
border:0;
}
#main{
width:275px;
margin:0 auto;
text-align:left;
}
#main p{
text-align:right;
padding:2px;
}
.text{
width:150px;
background:#eee;
border:1px solid #666;
}
.botton{
width:75px;
color:#fff;
font-weight:bold;
background:#555;
border:1px solid #000;
padding:2px;
}
</style>
<?=$vform->p();?>
<?=$xform->p(true);?>
</head>
<body>
<h1>vForm示例</h1>
<div id=’main’>
<form action=’http://www.m4ker.net’ method=’get’ id=’form1′ >
<p><b>帐号:</b><input name=’username’ class=’text’ id=’username’ /></p>
<p><b>密码:</b><input name=’pass’ class=’text’ id=’pass’ /></p>
<p><b>重复密码:</b><input name=’repass’ class=’text’ id=’repass’ /></p>
<p><b>电话号码:</b><input name=’phone’ class=’text’ id=’phone’ /></p>
<p><b>QQ号码:</b><input name=’qq’ class=’text’ id=’qq’ /></p>
<p><b>姓名:</b><input name=’name’ class=’text’ id=’name’ /></p>
<p><b>英文名:</b><input name=’ename’ class=’text’ id=’ename’ /></p>
<p><b>年龄:</b><input name=’age’ class=’text’ id=’age’ /></p>
<p><b>邮政编码:</b><input name=’postcode’ class=’text’ id=’postcode’ /></p>
<p><b>百分比:</b><input name=’p’ class=’text’ id=’p’ /></p>
<p><b>有理数:</b><input name=’f’ class=’text’ id=’f’ /></p>
<p><b>非汉字:</b><input name=’nc’ class=’text’ id=’nc’ /></p>

<p><input type=’submit’ value=’验证’ class=’botton’ id=’b_1′ /></p>
</form>
<form action=’http://www.m4ker.net’ method=’get’ id=’form2′ >
<p><b>帐号2:</b><input name=’username’ class=’text’ id=’username2′ /></p>
<p><b>密码2:</b><input name=’pass’ class=’text’ id=’pass2′ /></p>
<p><b>重复密码2:</b><input name=’repass’ class=’text’ id=’repass2′ /></p>

<p><input type=’submit’ value=’验证’ class=’botton’ id=’b_2′ /></p>
</form>
<p><a href=”http://validator.w3.org/check?uri=referer”><img src=”http://www.w3.org/Icons/valid-xhtml10” alt=”Valid XHTML 1.0 Transitional” height=”31″ width=”88″ /></a></p>
</div>
</body>
</html>

______________________________________

Ok了, 一点javascript都不需要.更详细的使用方法就需要大家自己发掘了.

附件:vform ver1.3 bulid 20071207

不使用中间变量来交换变量的值

Monday, July 16th, 2007

今天在群里有人问了这样一个问题, 在网上搜了一下, php大概有以下几种方法.

<?php

list($a,$b) = array($b,$a);

?>

这种方法我感觉不是很好, 虽然省去了一个变量的空间,但是调用函数也是要耗费系统资源的,不知道php是如何来进行操作的,估计时间效率上要比借助第三变量要慢.

<?php

$a=10;

$b=12;

$a=$b-$a; //$a=2,$b=12

$b=$b-$a; //$a=2,$b=10

$a=$b+$a; //$a=12,$b=10

?>

这个方法挺容易理解的,方法也很巧妙,只用了简单的加减运算.

<?php

$a=10; //$a=1010

$b=12; //$b=1100

$a=$a^$b; //$a=0110,$b=1100

$b=$a^$b; //$a=0110,$b=1010

$a=$a^$b; //$a=1100=12,$b=1010

?>

个人认为这种方法应该是效率最高的了,因为位操作的效率明显要比其他操作高的.

上面这些方法只供参考学习,不建议实际应用,严重影响程序的可读性.

今天第一次成功安装PHP+Apache+MySQL+Zend Optimizer

Tuesday, June 19th, 2007

用了大半天, 真不容易,.

是按PHP&MORE第一期的文章装的.

PHP5.2.3 + Apache2.2 + MYSQL5.0.41 + Zend Optimizer3.2.8

因为文章是很久以前的了,所以有很多地方不是按照上面的来做的.

太好了,再也不用装集成开发环境了.

图片附件:
php.jpg

图片附件:
apache.jpg

图片附件:
mysql.jpg

图片附件:
zend.jpg

for循环的特殊用法

Saturday, June 9th, 2007

在手册上发现了下面的代码

for ($i = 1; $i <= 10; echo $i , $i++);

但是运行之后提示语法错误, 后来在论坛发帖得知是由于echo 并不是一个函数,换成print就可以正常运行了

for ($i = 1; $i <= 10; print $i , $i++);

但是这段代码好象除了重复执行某条命令之外并没有什么其他的特殊功能了,如果想精简代码的话的确值得用一用,但是要注意程序的可读性.