记第一次面试经历——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扩展,将PerlPython解释器编译到服务器中。 ——维基百科

  • 如何判断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'? "相等":"不相等"; //<-- 这题老子脑抽答错了,印象巨深刻,这实在不应该,要扇自己几巴掌(
  • whiledo...whilefor 三种循环方法去输出 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
    7
    function 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
    3
    function GetMaxNum($a, $b, $c) {
    return max($a, $b, $c);
    }

    我感觉这样写的话这道题就没意义了。如果要这样写算正确,那我只得自认倒霉了。

嗯,题目就只想起了这些。对于做这份题我感触还是挺深的,很多题看一眼就能知道他想考你什么,但有一些我称之为“刁钻”的题是因为我确实没有去尝试过这些代码=_=,例如我知道 static 可以修饰类的成员或方法,使其无需实例化即可引用,但是像修饰一个变量还来做加减计算的,这方面真没去研究过。也许这就是“精通”和“熟悉”的差别吧,自己还要学习的地方还有很多。

二、机试部分

这部分内容没啥好说的,题目是做一个留言板,他给你提供前端模板,你来写 php 实现功能。我当时心中暗喜这跟我的课程设计作业一毛一样,甚至还直接去 Github 把我写的 db 类、用户类、留言类 直接拿过来用了,也不知道算不算作弊。

主要的要求如下:

  • 使用给定的前端模板,完成前台的用户注册、用户登录、用户留言。
  • 用户注册时需提供用户名、邮箱、电话
  • 留言模块支持游客留言和用户留言,若用户登录了则自动填写用户名、邮箱、电话。
  • 后台面板实现管理员留言列表的查删改,以及分页功能。
  • 可以使用给定的 db 类,也可以自己去封装类。

这部分也是限时的,一个半小时,我感觉就算是老油条,在这时间内都不一定能完成全部的功能。我在建表和 debug 上就花了相当长的一段时间,而且我是 debug 通一个功能再去做下一个功能。赶时间实现完全部功能但是一堆bug我觉得没什么意义。最后,除了后台这边留言的修改、删除和分页功能没实现,其他都做好了。临“交卷”之前,我还在相关代码处写了一段注释,说明我没有写分页功能的原因是因为时间不够。。不知道他们看到会是什么感受

比较吐血的是,他居然不告诉我数据库的账号密码,公司前台的小姐姐也是一知半解,不过最后我试了几种常用的默认账号密码,还是很快就试出来了。

三、面试部分

主要是了解个人情况,没有问到技术方面的问题,这部分就不讲了。

四、总结

笔试40分钟,题没做完;机试一个半小时,也没做完;机试我可以原谅自己,但是笔试就肯定是自己的问题了,关键还是因为代码量太少,思考逻辑犹豫半天… 写完这篇博文我就去自闭了,再见ヾ( ̄▽ ̄)Bye~Bye~


隔了一天之后出面试结果了:没过。哈哈哈