记第一次面试经历——PHP面试(笔试)
校招的时候投了一份 php 开发岗的简历,周一的时候对面 HR 打电话来通知我面试,面试的时间就是今天啦。人生第一次面试,想想还是挺激动的。这次的面试除了面试还有笔试和机试,有些题确实是刁钻到让我一脸懵逼,不过也让我开了眼界。
一、笔试部分
笔试是限定40分钟内完成的,题目还挺多的,全是简答题没有选择题。
下面我尽量回忆一下印象比较深的题目:
PHP是什么?PHP有什么用?PHP的配置文件是什么?
回答时我只回答了PHP是超文本预处理器,用来创建动态网页,配置文件是 php.ini
PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。) ——维基百科
Apache是什么?Apache有什么用?Apache的配置文件是什么?
我回答:Apache 是一个开源项目,提供网页服务,配置文件是 http.conf
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数计算机操作系统中运行。由于其跨平台和安全性[注 1],被广泛使用,是最流行的Web服务器软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。 ——维基百科
如何判断Apache安装完成?如何判断PHP安装完成?
我回答: 运行 Apache 服务,浏览器打开 http://localhost/ ,能显示默认网页就代表安装好了;编写 test.php,内容是
<?php phpinfo(); ?>
,运行 http://localhost/test.php ,如果能打印相应内容则代表 PHP 安装成功。写一个函数输出九九乘法表,还要注意带表格。(我寻思应该是前端的
<tr>
<td>
这些)| 1×1=1 | | | | | | | | |
| —– | —— | —— | —— | —— | —— | —— | —— | —— |
| 2×1=2 | 2×2=4 | | | | | | | |
| 3×1=3 | 3×2=6 | 3×3=9 | | | | | | |
| 4×1=4 | 4×2=8 | 4×3=12 | 4×4=16 | | | | | |
| 5×1=5 | 5×2=10 | 5×3=15 | 5×4=20 | 5×5=25 | | | | |
| 6×1=6 | 6×2=12 | 6×3=18 | 6×4=24 | 6×5=30 | 6×6=36 | | | |
| 7×1=7 | 7×2=14 | 7×3=21 | 7×4=28 | 7×5=35 | 7×6=42 | | | |
| 8×1=8 | 8×2=16 | 8×3=24 | 8×4=32 | 8×5=40 | 8×6=48 | 8×7=56 | 8×8=64 | |
| 9×1=9 | 9×2=18 | 9×3=27 | 9×4=36 | 9×5=45 | 9×6=54 | 9×7=63 | 9×8=72 | 9×9=81 |
这道题我没做,不是不会做,而是当时为了节约时间,代码题都直接跳过了,想着最后写,没想到最后果然时间不够了,这道题最后没做,233有关
$i++
和++$i
的区别。(不是直接问的,出了好几道代码题考你,而且还特别绕)1
2
3
4
5
6//题目代码大概像这样,求输出的值
$a = 3;
$b = $a++;
$c = ++$a;
echo $b;
echo $c;
在一个 function 方法里定义 static 变量的时候,多次执行该 function,求 static 的变量的值如何变化。(也不是直接问的)
1
2
3
4
5
6
7
8
9//题目代码大概像这样,求输出的值
function keep_val(){
static $val = 0;
$val ++;
return $val;
}
echo keep_val();
echo keep_val();
echo keep_val();(还出了好几种类似这样的题,我估计考点都是一样的)
同时 echo 多种数据类型的时候,输出的结果?(同样不是直接问的)
1
2//题目代码大概像这样,求输出的值
echo 123."123".true.null.false;不同数据类型之间的比较结果 (仍然是代码题)
1
2
3
4//题目代码大概像这样,求输出的值
echo 0 == false? "相等":"不相等" ;
echo null == false? "相等":"不相等";
echo 0 == '0'? "相等":"不相等"; //<-- 这题老子脑抽答错了,印象巨深刻,这实在不应该,要扇自己几巴掌(用
while
、do...while
、for
三种循环方法去输出 1 2 3 4 5 7 8 10 11 12 (注意去掉的6和9)这题简单,只要注意一下循环体内
if ($i == 6 || $i == 9)
的判断就行了。编程题:编写一个 function,传入一个数 N,计算并返回 1×2×3×…×N 的结果。
这题也简单,也是循环问题。
编程题:编写一个 function,传入3个值,返回最大的那个值。
这题我特么竟然答错了!!!!我的代码:
1
2
3
4
5
6
7function GetMaxNum($a, $b, $c) {
if ($a>$b && $a>$c)
return $a;
else if ($b>$c)
return $b;
return $c;
}从逻辑上来看好像没有问题啊?? 然后我上 Google 查找了一下,找到这么一条函数:
max — 找出最大值 http://php.net/manual/zh/function.max.php
所以这道题应该这样写?
1
2
3function GetMaxNum($a, $b, $c) {
return max($a, $b, $c);
}我感觉这样写的话这道题就没意义了。如果要这样写算正确,那我只得自认倒霉了。
嗯,题目就只想起了这些。对于做这份题我感触还是挺深的,很多题看一眼就能知道他想考你什么,但有一些我称之为“刁钻”的题是因为我确实没有去尝试过这些代码=_=,例如我知道 static
可以修饰类的成员或方法,使其无需实例化即可引用,但是像修饰一个变量还来做加减计算的,这方面真没去研究过。也许这就是“精通”和“熟悉”的差别吧,自己还要学习的地方还有很多。
二、机试部分
这部分内容没啥好说的,题目是做一个留言板,他给你提供前端模板,你来写 php 实现功能。我当时心中暗喜这跟我的课程设计作业一毛一样,甚至还直接去 Github 把我写的 db 类、用户类、留言类 直接拿过来用了,也不知道算不算作弊。
主要的要求如下:
- 使用给定的前端模板,完成前台的用户注册、用户登录、用户留言。
- 用户注册时需提供用户名、邮箱、电话
- 留言模块支持游客留言和用户留言,若用户登录了则自动填写用户名、邮箱、电话。
- 后台面板实现管理员留言列表的查删改,以及分页功能。
- 可以使用给定的 db 类,也可以自己去封装类。
这部分也是限时的,一个半小时,我感觉就算是老油条,在这时间内都不一定能完成全部的功能。我在建表和 debug 上就花了相当长的一段时间,而且我是 debug 通一个功能再去做下一个功能。赶时间实现完全部功能但是一堆bug我觉得没什么意义。最后,除了后台这边留言的修改、删除和分页功能没实现,其他都做好了。临“交卷”之前,我还在相关代码处写了一段注释,说明我没有写分页功能的原因是因为时间不够。。不知道他们看到会是什么感受
比较吐血的是,他居然不告诉我数据库的账号密码,公司前台的小姐姐也是一知半解,不过最后我试了几种常用的默认账号密码,还是很快就试出来了。
三、面试部分
主要是了解个人情况,没有问到技术方面的问题,这部分就不讲了。
四、总结
笔试40分钟,题没做完;机试一个半小时,也没做完;机试我可以原谅自己,但是笔试就肯定是自己的问题了,关键还是因为代码量太少,思考逻辑犹豫半天… 写完这篇博文我就去自闭了,再见ヾ( ̄▽ ̄)Bye~Bye~
隔了一天之后出面试结果了:没过。哈哈哈