V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiaotianhu
V2EX  ›  程序员

求思路,一人说一个 PHP 的面试题吧

  •  1
     
  •   xiaotianhu · 2017-02-20 20:00:20 +08:00 · 9588 次点击
    这是一个创建于 2593 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近招人

    感觉传统的 PHP 面试题都太套路了

    求思路,有什么更合理的 PHP 面试题?

    第 1 条附言  ·  2017-02-21 11:06:35 +08:00
    招人的目标很简单,就想找到一个 1-2w 的,3 年左右经验 ,能写好代码,对新事物有好奇心 能学习的人.
    通过 面试题 /笔试题 区分一个人能不能"写出好代码",我觉得比考一些 语言细节,跟"回字有四种写法"也差不多,没什么意义啊.
    72 条回复    2017-02-22 23:52:02 +08:00
    hornets
        1
    hornets  
       2017-02-20 20:17:37 +08:00
    php 是不是最好的语言
    misaka20038numbe
        2
    misaka20038numbe  
       2017-02-20 20:19:00 +08:00
    是的
    dtfm
        3
    dtfm  
       2017-02-20 20:19:51 +08:00 via Android   ❤️ 1
    中国 PHP 作者是谁?在哪儿上班?
    hd7771
        4
    hd7771  
       2017-02-20 20:28:11 +08:00
    你平时工作遇到的要想想的情况都可以问,比如
    我在数据库中存了很多到题目,然后管理员又有权限出比赛,可以把题目拉到比赛里,一个题目可以对应多个比赛,怎么做?这就问道了数据库多对多的实现。
    每场比赛有很多人参加,每个人都能看到自己参加的比赛提交记录,但是要把每场比赛和外面题库的提交记录分开,怎么做?这就问道了账号权限处理。
    每场比赛还有一个根据做出题的数量和罚时相关的实时更新的排名表,如果不是实时更新怎么处理,如果是实时更新怎么做最快?这就问了排序(静态)和二分(动态)。
    如果提交者交上来的是 sql 代码或者 js 代码怎么办?这就问道了 web 安全。
    假设提交者提交上来的是一个程序调用危险的系统调用怎么处理?这就问了系统安全。
    cuebyte
        5
    cuebyte  
       2017-02-20 20:59:03 +08:00
    请面试官自己出题
    ferock
        6
    ferock  
       2017-02-20 21:09:28 +08:00 via Android
    请面试官自己出题
    coderluan
        7
    coderluan  
       2017-02-20 21:13:44 +08:00
    你最近看的一本 php 的书是什么?感觉怎么样?
    hahaDashen
        8
    hahaDashen  
       2017-02-20 21:15:21 +08:00
    请出一个 PHP 的面试题 (笑)
    helloccav
        9
    helloccav  
       2017-02-20 21:16:45 +08:00 via Android
    @coderluan 我最近看的一本书叫做 php 7 天入门,看完这本书就来你这里面试了,至于感觉怎么样要看你录不录取我
    v2dead
        10
    v2dead  
       2017-02-20 21:25:23 +08:00   ❤️ 6
    树上七个猴,地上一个猴。
    请拿 php 实现树对象,猴对象,要求树对象带可迭代接口,可迭代树上存在的猴;实现一个上树的接口,地上的猴可以上树。
    如果在迭代中间,地上的猴上树,如何保证迭代的正确性,空间的低复杂度。


    开个玩笑: P
    foo2bar
        11
    foo2bar  
       2017-02-20 21:39:52 +08:00
    @v2dead 被你逗乐的不行 wwwwwww
    ydxred
        12
    ydxred  
       2017-02-20 21:44:13 +08:00 via Android   ❤️ 1
    php 的全称是啥?背着写出来。。。
    gouchaoer
        13
    gouchaoer  
       2017-02-20 21:50:41 +08:00 via Android
    面 php 语言细节没啥用, php 本来就很简单。。。数据库遇到的问题,对 php 生态了解, redis/memcache , http 后台那一套,安全, linux
    changwei
        14
    changwei  
       2017-02-20 22:02:29 +08:00
    543400
        15
    543400  
       2017-02-20 22:24:56 +08:00 via Android
    手写冒泡算法
    wdlth
        16
    wdlth  
       2017-02-20 22:40:00 +08:00
    请说出 PHP 5.2 5.3 5.4 5.5 5.6 7.0 7.1
    各两个相隔个版本的新特性和废弃的东西。
    visonme
        17
    visonme  
       2017-02-20 22:40:04 +08:00
    你用 php 干过最开心的事情
    mingyun
        18
    mingyun  
       2017-02-20 23:23:16 +08:00
    @changwei 这个比较典型
    ins
        19
    ins  
       2017-02-20 23:39:18 +08:00
    $str = "[email protected]";
    regex="([a−z0−9\.−]+)@([\da−z\.−]+)\.([a−z\.]2,6)regex="([a−z0−9\.−]+)@([\da−z\.−]+)\.([a−z\.]2,6)" ; //正则
    return preg_match(regex,regex,str)
    orvice
        20
    orvice  
       2017-02-20 23:42:25 +08:00
    @wdlth 这个💊
    能说出 5.4 5.6 7 之间就差不多了吧
    cxbig
        21
    cxbig  
       2017-02-21 06:33:43 +08:00
    我司一般会出一个不太复杂的算术题,一小时内手写一个 Class 出来,大概 50 行左右,然后上机跑得通。
    kankana
        22
    kankana  
       2017-02-21 08:04:16 +08:00 via iPhone
    late static binding 和 使用生成器遍历数据库,居然没人懂……
    SoulGem
        23
    SoulGem  
       2017-02-21 08:13:38 +08:00 via iPhone
    请问有比 PHP 更好的语言吗?请列举
    mcfog
        24
    mcfog  
       2017-02-21 08:48:41 +08:00 via Android   ❤️ 3
    低级:描述一下最近印象最深的解决的问题?
    中级:让你主导项目你会选什么框架?
    高级:如何提高团队整体的编码质量?
    CFM880
        25
    CFM880  
       2017-02-21 08:55:06 +08:00
    发现问题,分析问题,解决问题,甩个问题给他。
    yuanchao
        26
    yuanchao  
       2017-02-21 09:08:46 +08:00
    @543400 还真被拉着手写过
    superkey
        27
    superkey  
       2017-02-21 09:26:54 +08:00
    & 的具体意思,例如 23&1 的结果.
    irenicus
        28
    irenicus  
       2017-02-21 09:36:30 +08:00
    @wdlth 这题一出,面试者就哭了。。。
    tabris17
        29
    tabris17  
       2017-02-21 09:44:10 +08:00
    请写出 PHP7 语言的 BNF 范式
    phrack
        30
    phrack  
       2017-02-21 10:04:20 +08:00 via Android   ❤️ 4
    http://pythonforengineers.com/the-programming-interview-from-hell/

    昨天刚看到的一个关于面试的博客,能笑死人
    ywisax
        31
    ywisax  
       2017-02-21 10:24:52 +08:00   ❤️ 1
    考语言特性的话,可以问下 class 中,$this 、 self 、 static 的区别。
    也可以试下让面试者描述下怎么用 redis 实现个简单的 counter 或锁,还有优缺点
    wudanyang
        32
    wudanyang  
       2017-02-21 10:24:59 +08:00
    @phrack 23333333
    chuhemiao
        33
    chuhemiao  
       2017-02-21 10:48:53 +08:00
    让面试者出一道自己认为是他水平的题,然后解释出详细思路(加手写代码) 233333
    murmur
        34
    murmur  
       2017-02-21 10:49:14 +08:00
    世界上最好的语言______________(100 分)
    TIGERB
        35
    TIGERB  
       2017-02-21 10:52:58 +08:00
    ```
    $arr = [1,2,3];
    foreach($arr as &$v) {
    //nothing todo.
    }
    foreach($arr as $v) {
    //nothing todo.
    }
    print_r($arr);
    ```
    结果?
    ydxred
        36
    ydxred  
       2017-02-21 10:59:25 +08:00
    @SoulGem php 是世界上最好的语言!怎么能还有比他更好的 呢!这不是来找事情吗?23333
    rannnn
        37
    rannnn  
       2017-02-21 11:57:23 +08:00
    反转单向链表
    CFM880
        38
    CFM880  
       2017-02-21 12:40:32 +08:00
    @murmur Java
    jarlyyn
        39
    jarlyyn  
       2017-02-21 12:46:57 +08:00
    基于 php 的应用场景,面 php 和语言没啥大关系。

    标准库
    网站基础架构
    各种基本概念
    网站安全处理
    各种 sql/nosql/缓存的使用经验
    request/response 的常见 header

    差不离了。
    wulin
        40
    wulin  
       2017-02-21 13:21:13 +08:00
    简述 yii 的 Behavior 绑定原理, laravel 的 ioc 原理
    好多人连自己天天用的框架源代码也没看过
    1762628386
        41
    1762628386  
       2017-02-21 13:21:39 +08:00   ❤️ 2
    1.说一说什么是静态后期绑定
    2.接口 Interface 的作用
    3.封装继承抽象是什么意思,php 如何表现
    4.影响 php 性能的几个方面
    5.说说对 php gc 的理解
    6.如何改变匿名函数 Closure 的作用域
    7.php7 了解多少 以及你对哪个新特性最感兴趣
    8.cookie/session 的生命周期
    9.什么情况下设置 header 头会失效
    10.ob_start 系列的作用,以及在项目中都怎么用过
    11.如果给 yii/tp/加上一个注释 Annotation 路由你该如何实现
    12 !empty($varable)和 isset($varable)的区别
    13 请说出几种接受外部变量的方式
    14.说说从 nginx 接受请求到 php 输出内容,期间都经过了什么
    picasso250
        42
    picasso250  
       2017-02-21 13:38:43 +08:00
    如何防止 SQL 注入
    如何防止 XSS 注入
    如何防止 CRSF
    javaon0120
        43
    javaon0120  
       2017-02-21 13:56:41 +08:00
    @changwei 正解
    xiaotianhu
        44
    xiaotianhu  
    OP
       2017-02-21 14:06:19 +08:00
    @wulin 我面 10 个有九个半没看过 所以无奈了.大部分都是用 TP
    小公司招人痛苦啊...
    xiaotianhu
        45
    xiaotianhu  
    OP
       2017-02-21 14:10:24 +08:00
    @1762628386 感谢,很有启发意义.
    xiaotianhu
        46
    xiaotianhu  
    OP
       2017-02-21 14:11:38 +08:00
    @jarlyyn 确实是这样.来面试的 谁还不会写 PHP,太偏的 PHP 技巧我也不会问
    然而来面试的人基本上就把自己定义为"写 PHP 的",除了 PHP 别的基本懒得看也不懂的水平...
    aeio59f04idz
        47
    aeio59f04idz  
       2017-02-21 14:13:38 +08:00
    php 是最好的语言吗。另广州招 PHP ,看我信息
    aksoft
        48
    aksoft  
       2017-02-21 15:12:04 +08:00
    sql 注入防了半天 还是被干。
    各大网站被爆哭是什么情况。
    hiboshi
        49
    hiboshi  
       2017-02-21 15:16:10 +08:00
    楼主在哪里 感觉我挺符合的
    1762628386
        50
    1762628386  
       2017-02-21 15:23:20 +08:00
    @aksoft 再 nb 的注入也经不起接收外部变量拼 sql
    sheenaringo
        51
    sheenaringo  
       2017-02-21 15:51:15 +08:00
    PHP 就是最好的语言,谁不承认就是不客观。
    手动微博摊手表情
    xiaotianhu
        52
    xiaotianhu  
    OP
       2017-02-21 16:20:30 +08:00
    @hiboshi 41204034 欢迎 qq 骚扰
    xiaotianhu
        53
    xiaotianhu  
    OP
       2017-02-21 16:22:11 +08:00
    @hiboshi 我司北京 不好意思
    liyu4
        54
    liyu4  
       2017-02-21 17:16:45 +08:00
    手写单链表逆向打印
    aeio59f04idz
        55
    aeio59f04idz  
       2017-02-21 17:24:21 +08:00
    我是写 PHP 的,防 SQL 这些交给 WAF 哈哈 ,
    cxbig
        56
    cxbig  
       2017-02-21 17:29:13 +08:00
    另外可以自己搜 PHP Certification 题库
    能解决那些稀奇古怪的题目,并不代表日常的代码水准就高
    另外可以扩展一下,考校一些 Git 、 Linux 的常用命令
    1762628386
        57
    1762628386  
       2017-02-21 17:34:34 +08:00
    咳咳 我先标记下 说不定有用
    skylancer
        58
    skylancer  
       2017-02-21 17:44:39 +08:00
    @v2dead 笑死我了
    1762628386
        59
    1762628386  
       2017-02-21 17:48:53 +08:00
    楼主是医疗的?
    herozzm
        60
    herozzm  
       2017-02-21 18:38:56 +08:00 via Android
    不使用递归的情况下实现无限层级的类别展现
    jamlee
        61
    jamlee  
       2017-02-21 21:38:03 +08:00
    @1762628386 php 还不可以使用注释来注入依赖什么的吧
    HLT
        62
    HLT  
       2017-02-21 21:40:33 +08:00
    什么是面向对象编程
    什么是面向工资编程
    sobigfish
        63
    sobigfish  
       2017-02-21 21:48:07 +08:00
    直接问 PHP 7.0 更新了什么 feature ?=。=
    pubby
        64
    pubby  
       2017-02-21 23:02:26 +08:00
    @TIGERB 这个好
    1762628386
        65
    1762628386  
       2017-02-21 23:05:19 +08:00
    @jamlee 早就可以了 用反射获取注释 正则匹配指令 路由注释 Symfony2 已经实现了
    ruooooooli
        66
    ruooooooli  
       2017-02-22 09:34:40 +08:00
    把我招了吧 哈哈哈
    realpg
        67
    realpg  
       2017-02-22 10:32:46 +08:00   ❤️ 2
    面试不问细节,不问奇葩算法,这些东西就算不会自己上网一搜随便看看就明白,当然太简单的那种基本算法可以问问,不需要实现,比如排序啊之类好歹你大概知道有几种方法都叫啥名,到时候搜你也得知道关键词,不用考具体实现

    然后,聊聊 http 模型, fastcgi 处理模型,确定基本问题知道在哪,常用的 MYSQL 大坑是否了解,比如 LIMIT 很大数字会慢这种常识,细节见镇长

    然后,聊聊各种数据安全问题,防止泄露的处理,常见业务大坑比如支付网关返回只验证订单号成功不验证金额的这种事儿怎么看之类

    然后,针对 PHP ,问问 5.X 到 5.6 有啥主要变化,新特性简单了解即可,日常能用到的会出现不兼容问题的为重点,然后是 5.6 到 7 有啥重点需要注意的地方之类,重点在代码题



    代码题:

    给定时间(4 小时内)处理一个基本业务数据逻辑,环境在测试服务器搭好, git 推上去自动部署,要求每秒钟几万次的请求(另外测试服务器有一个 golang 客户端可以用来模拟)

    给定的自己写的变种 CI 框架,包含公司一部分已经写好的模块可以直接调用,提供框架完整中英文手册,以及一部分同类别人写的类似功能源代码可以参考使用语法,核心逻辑部分,需要从 session 中获取几个参数,从 cookies 中获取几个参数,从 post 获取几个参数,然后代入数据库,交叉 N 个表

    需要写的是一个登陆并维持状态(界面不要求,白页 input ,白页显示即可),然后获取一个关联系统预设的 cookies ,一个用户主动的 post 数据,几个 url 上带来的算是 get 的参数,然后结合这些去数据库按照三个规则查询生成 table 显示给用户(三种简单逻辑但是结合数据库结构考虑性能就不太好搞的逻辑),还有一个 ajax 入库的 api 接口

    这个规则里会设计一个表格的变换,给定较大压力下, PHP 模块都配置好,包括 redis , memcached 缓存都带配置好的服务器,在框架手册里会写明可以直接用。测试压力调度器可以随时让他测试自己的性能,约定题目会告诉你生成永久临时辅助查询表需要书写临时表数据定义文档上传版本库,对表结构进行调整、建立索引需要修改版本库中的数据库定义文档(暗示可以对进行修改的范围)

    一般熟练工, 30~50 分钟就能写完,然后考核代码质量

    首先那个生成报表的,需要给数据库加索引,如果稍微高级点的,会考虑生成一个辅助列(触发器)甚至辅助表去把查询拆分成简单查询几倍提高性能

    然后,处理查询部分, stmt , activerecord 之类可以自选,具体怎么去处理三个查询中的两个用现有表结构很难简单弄出目标数据的方式的巧妙程度需要观察,这是技术硬实力

    另外就是输入过滤,对于系统内约定的传进来 int ,有没有随手 intval 一下的习惯,对于用户数据(比如 cookies )是否有随手 intval 的习惯等等

    这些都处理得很厉害,加分点众多,基本日常写业务基本无敌了
    xiaotianhu
        68
    xiaotianhu  
    OP
       2017-02-22 18:04:34 +08:00
    @realpg
    很详细啊,多谢了
    然而现实情况是,我也不敢问细节 就一些面上的东西,怎么看负载查找文件的命令啊,http 头里面有啥字段啊,session 过期咋整啊 这些问题,对方都是一脸蒙逼的状态,很多 3-5 年经验的人,不知道他们天天都在干啥 写了三年后台也不至于啊.
    cncqw
        69
    cncqw  
       2017-02-22 21:37:14 +08:00
    @realpg 你说的这些全部都会的工资至少要 20k+了
    realpg
        70
    realpg  
       2017-02-22 21:39:00 +08:00
    @cncqw #69
    招聘职位是高级 PHP 工程师的 难道 20K+不是基本盘么?
    1762628386
        71
    1762628386  
       2017-02-22 23:51:21 +08:00
    @realpg 这个值啊
    1762628386
        72
    1762628386  
       2017-02-22 23:52:02 +08:00
    不过大多数公司 RD 没有创建触发器的权限吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3593 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 00:50 · PVG 08:50 · LAX 17:50 · JFK 20:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.