• 请不要在回答技术问题时复制粘贴 AI 生成的内容
imcnan
V2EX  ›  程序员

针对实习生,我出的这道 PHP 笔试题很难么?

  •  
  •   imcnan · Mar 26, 2018 · 19923 views
    This topic created in 3150 days ago, the information mentioned may be changed or developed.

    题目如下

    • 使用 fsockopen、fwrite、fread 等实现自己的 HTTP Client。
      • 支持 Get、Post 两种访问模式。
      • 支持设置 Post 参数。
      • 支持设置 Cookie。

    就这么一道题目,几乎没有做上来的。。

    我的笔试题是提前告诉的,偶尔有提前背过题目来的,但是对 fwrite、fread 等函数的参数和返回值完全说不清楚。

    😌😔哎,既然背过了,为什么不一起看看文档。。。

    补一个招聘信息:

    #北京望京# 招聘 iOS、Android、PHP、Web 攻城狮 https://www.akaxin.com/docs/hire_document/index.html

    161 replies  •  2021-08-02 11:11:56 +08:00
    1  2  
    ❮ ❯
    wangbenjun5
    wangbenjun5
    Mar 26, 2018
    1
    我敢说这题大部分程序员都写不出来,甭管是 1 年还是 5 年经验,因为我从来没有去研究过!重复造轮子?没那功夫
    imcnan
    imcnan
    OP
    Mar 26, 2018
    2
    @wangbenjun5 7W 与 7K 的差距就这么慢慢的出来了
    wangbenjun5
    wangbenjun5
    Mar 26, 2018
    3
    @imcnan 如果不背题,直接站撸能写出来,这样的实习生 BAT 随便进吧,估计也不会写 PHP
    thedog
    thedog
    Mar 26, 2018 via Android
    4
    很无聊的题
    baixiangcpp
    baixiangcpp
    Mar 26, 2018❤️2
    5
    大学 C 语言实现过一个玩具 HTTP server,看到这个表示太简单了
    lazypu
    lazypu
    Mar 26, 2018
    6
    发现我也写不出来, 我甚至没咋用过这三个函数, 特别是 `fsockopen`.
    Kilerd
    Kilerd
    Mar 26, 2018❤️46
    7
    如果说原理,可能实习生有 30% 能说出了,应届生 50%,有工作经验的 90%

    如果说实践,实习生可能 5%,应届生 30%,有工作经验的 20%

    如果能查文档。可能 80%的人可以写出来。你这样无疑是要求应聘的人记住整个 PHP 文档。
    PHP 在使用层面上讲,90% 的人不会接触到这三个函数。


    如果你说这是 7W 和 7K 的区别,那么你开心就好。
    tradzero
    tradzero
    Mar 26, 2018
    8
    就问能不能查文档吧 不查文档这辈子我是答不出来了
    cuebyte
    cuebyte
    Mar 26, 2018
    9
    樓主是用自研發的 PHP 框架?
    myyou
    myyou
    Mar 26, 2018❤️19
    10
    这题写出来,你能给实习生 7w ?
    tomychen
    tomychen
    Mar 26, 2018
    11
    倒也不是多难...只是我想知道允许查阅帮助么?还是纯凭脑子记?
    如果说要纯靠脑来记是有点难为人...
    jtsai
    jtsai
    Mar 26, 2018
    12
    你直接考 http 协议比较好,这才是底层
    UnknownR
    UnknownR
    Mar 26, 2018❤️1
    13
    如果是提前告诉过的,要么是他不上心,要么就是水平可能真的不行,我司面试时也是提前告诉面试者要考哪些点,具体面试时会逐渐深入,一可以看重视程度,二看学习水平,三看基础,至于经验什么的,对于实习生也不太会考那些东西,我觉得楼主的面法没什么问题
    likai
    likai
    Mar 26, 2018
    14
    这个题目难不难最大的问题是你这个 PHP 职位开的是 7W 还是 7K,
    如果开的是 7W, 不难。开的是 7K,也许对大部分人来说有点难。
    daxingzhesun
    daxingzhesun
    Mar 26, 2018❤️1
    15
    @likai 万一开的是 5000 呢,哈哈哈哈 h
    mandex
    mandex
    Mar 26, 2018
    16
    我刚刚去看文档了,讲道理的话你提前给了题目,这个应该是不难的。
    但是你这样招不到人啊,公司只是要个实习生而已。
    lauix
    lauix
    Mar 26, 2018
    17
    还好曾经手写过 HTTP Server 没有什么难度,写过的人都懂。
    但是没有写过的人当然不会了。
    而且研究了有什么用,有那么多现成的框架用。
    harker
    harker
    Mar 26, 2018
    18
    说说书写结构和逻辑还好,如果不查资料直接纸上写还真是挺难,不提前做好充足准备,有思路函数也会有很多记不清的
    zsx
    zsx
    Mar 26, 2018
    19
    记参数和返回值有啥意思吗……
    lauix
    lauix
    Mar 26, 2018
    20
    HTTP Client 一样简单就是封装起来调用,需要好好设计了。
    nosay
    nosay
    Mar 26, 2018
    21
    我猜如果提前告诉了题目,而面试那么多的人依然不太满意,可能还是没有吸引到优秀并且重视你们的人吧..
    DavidNineRoc
    DavidNineRoc
    Mar 26, 2018
    22
    fsockopen 的我就不说了,fwrite 和 fopen 这些参数记不过来的话,得打一顿。
    可以提前查阅的话,楼主还是很人性了。他们自己不争气能怪谁呢?
    如果是直接面考这个,没做过相关或者没有深入了解,我猜自己拼接请求头还是有点小难度的。
    qf19910623
    qf19910623
    Mar 26, 2018
    23
    三年多的 PHP 工作经验表示我也写不出来,平时这种东西我都是直接翻文档,谁闲的蛋疼跑去背这些东西
    GG668v26Fd55CP5W
    GG668v26Fd55CP5W
    Mar 26, 2018 via iPhone
    24
    这个是得查文档才能写,第三方的那么多那么好,没事谁自己造轮子封装 http client。再不济用 curl 啊
    mcluyu
    mcluyu
    Mar 26, 2018
    25
    欸..所以我要是能力这么强值 7w 的话,我为什么要去你们这么一个要用户没用户、要品牌没品牌、找不到看不到未来盈利点的公司上班嚯,还要全栈极客, 这样就能一个人干几个人的活了呢,省钱,还能出活,代码质量还都挺高,嗯为你的机智点赞
    zjsxwc
    zjsxwc
    Mar 26, 2018
    26
    不难,但要查文档
    GOOD21
    GOOD21
    Mar 26, 2018
    27
    十分想 at 一下 @Laruence 回答一下
    xuanyuanaosheng
    xuanyuanaosheng
    Mar 26, 2018 via Android
    28
    建议考那种基础的理论了解程度,你可以详细问下 http 协议,请求返回码什么的,或者库,一般写程序都是一边查,一边写,不然轮子太多也不好记哈
    cxbig
    cxbig
    Mar 26, 2018❤️4
    29
    “回字的四种写法”
    lifeintools
    lifeintools
    Mar 26, 2018
    30
    提前告诉了 应该可以的。
    godsoul
    godsoul
    Mar 26, 2018
    31
    给看 RFC 文档和 PHP 文档就可以写出来,我就不信题主可以不出错的背出 http 协议规则,当然如果能上机,请求下也可以复制出来。
    coffeSlider
    coffeSlider
    Mar 26, 2018 via Android❤️21
    32
    大家好,我司打算耗巨资 3k 招一个全栈实习生,能手撸 Windows 的优先。
    huijiewei
    huijiewei
    Mar 26, 2018
    33
    不查文档我也记不住

    PHP 大部分函数我都会自己再封装一遍
    hxndg
    hxndg
    Mar 26, 2018❤️1
    34
    @wangbenjun5
    我觉得你还是不要随便代表1年到 5 年的程序员好了。
    KIDJourney
    KIDJourney
    Mar 26, 2018
    35
    我会写,你给 7w 吗。
    hxndg
    hxndg
    Mar 26, 2018
    36
    挺一下 lz 吧,工作以后发现即使做不出来能够体现思路也是可以的。
    Chrics
    Chrics
    Mar 26, 2018
    37
    讲真我 Laravel 贼溜,这个不会做。。
    mcfog
    mcfog
    Mar 26, 2018
    38
    嘛,就我个人来说,实习 /应届这头和资深老司机那头,我都是“请开始你的表演”的,前者主要看潜力,当前水平无所谓,后者问这些 general 的问题没啥帮助

    最近开始尝试完形填空,感觉还不错
    zhangfeiwudi
    zhangfeiwudi
    Mar 26, 2018
    39
    这东西,不查文档真做不出来,你让我用 C 写一遍我能写出来,php 是真没研究过这几个函数,无非就是几个函数的调用嘛,我觉得能把伪代码 或者思路说出来就行了
    bfdh
    bfdh
    Mar 26, 2018
    40
    貌似难点不在 PHP,而在面试者是否熟练掌握 http ?
    zakokun
    zakokun
    Mar 26, 2018 via iPhone
    41
    你这何必呢,就是一个实习生
    问问 cookie session 的概念以及在用户登录中的一些应用
    php 连接 db 的一些函数和基本用法
    问问个人写的项目 用了哪些高级的用法
    这不就行了嘛
    bonfirenosedoyou
    bonfirenosedoyou
    Mar 26, 2018
    42
    "列出您知道的 PHP7 中的新特性"
    相比之下这题是不是太简单了。。。
    F281M6Dh8DXpD1g2
    F281M6Dh8DXpD1g2
    Mar 26, 2018 via iPhone
    43
    难怪 php 日常招黑
    joeke
    joeke
    Mar 26, 2018
    44
    其实吧 也没什么好记得啊,fsockopen 这个很不常用吧,另外两个用过知道的吧
    moult
    moult
    Mar 26, 2018 via iPhone
    45
    再进阶一题。使用 php 这三个函数进行 smtp 协议发邮件。


    退一级的话,使用 telnet 命令完成一次 http 请求。
    ooh
    ooh
    Mar 26, 2018
    46
    出题水平不行
    imcnan
    imcnan
    OP
    Mar 26, 2018
    47
    @wangbenjun5 可以背题,我的题目是提前给的。但是只求背题的时候学一下看一下文档,不要只是背英文字母,这是学习方法的问题。
    invoke
    invoke
    Mar 26, 2018
    48
    你提前出题 给我一点时间查文档 那就能写出来。

    但是讲实话,我写 PHP4 年了 fsockopen 真的一次都没用过。
    imcnan
    imcnan
    OP
    Mar 26, 2018
    49
    @tradzero 可以,期间可以上网
    imcnan
    imcnan
    OP
    Mar 26, 2018
    50
    @likai 我指的差距就这么慢慢的出来了,指的是方法。
    碰到自己不会的,是只 Google 一下然后背英文字母,还是期间真的认真看了一下文档。
    imcnan
    imcnan
    OP
    Mar 26, 2018
    51
    @falcon05 我是为了面试。工作中当然让他们直接用 curl 之类的。
    sigouyi
    sigouyi
    Mar 26, 2018
    52
    应届生的时候出来找工作碰到过这样的,总算在 v 站发现一次了,吐槽一句,出这种题的真蛋疼,没水平
    RorschachZZZ
    RorschachZZZ
    Mar 26, 2018
    53
    如果我碰见这个题,我只写思路不写代码。
    Sapp
    Sapp
    Mar 26, 2018
    54
    这和前端手写 ajax 异曲同工吧
    facetest
    facetest
    Mar 26, 2018 via Android
    55
    lz 自己能不看资料写出来么
    sunmonster
    sunmonster
    Mar 26, 2018
    56
    @imcnan 既然工作中直接用的是 curl,那谁会去记用不着的概念东西?所以还是回到点子上,你只是为了面试而面试,而不是招一个能工作的人。还是那句话,编程是为了解决问题,不是用来显示自己有多么聪明的。
    haohappy
    haohappy
    Mar 26, 2018
    57
    @imcnan 要不给个例子来瞧瞧?
    gbin
    gbin
    Mar 26, 2018 via Android
    58
    所以说实习生到底给多少钱呢?
    moonsn
    moonsn
    Mar 26, 2018
    59
    这道题考了什么?对 http 协议的了解?对三个不经常用的函数的熟悉?没啥意义。

    但是,可以上网的话,写不出来确实不应该(也有可能没学过计算机网络?)。
    azhi
    azhi
    Mar 26, 2018 via Android
    60
    open 下 host 然后 write 后面的 path,然后拼 header 就可以了,难道你们异步时不是这么玩的?
    vincenttone
    vincenttone
    Mar 26, 2018
    61
    考的主要还是 http 协议吧,如果楼主的公司是个小公司,九成的人应该都答不上。
    lastpass
    lastpass
    Mar 26, 2018 via Android
    62
    能上网倒是没有什么问题,只要不是徒手撸。
    neurocomputing
    neurocomputing
    Mar 26, 2018
    63
    为什么要能够将“ fwrite、fread 等函数的参数和返回值”说清楚?

    文档是用来查的,不是用来背的,笔试考这玩意儿有意义吗?笔试做不出来就意味着不能顺畅写东西吗?

    你这笔试能够考出对语言的驾驭能力、编程思路和经验吗?

    说实话,我觉得你这题出得挺 low 的
    imcnan
    imcnan
    OP
    Mar 26, 2018
    64
    @gbin 现在已经在的,实习生最高 300/天,这方面你不用担心。
    liuzhedash
    liuzhedash
    Mar 26, 2018
    65
    没记错的话,大部分 PHP 虚拟主机供应商都屏蔽了这三个函数。。
    zhongkouwei
    zhongkouwei
    Mar 26, 2018
    66
    这就是传说中的偏题了,能写出来的不一定适合你,写不出来的也不一定是菜鸡。我感觉面试题还是要以全面掌握面试者的各方面素质为目的,而不是难倒他们
    MeteorCat
    MeteorCat
    Mar 26, 2018 via Android
    67
    我 PHP 我写不出来,但是 C 写的出来,我感觉不限定语言的话,感觉没什么问题
    v2dead
    v2dead
    Mar 26, 2018❤️1
    68
    倒是看不出喷楼主的,如果是没有任何准备就出这种题目那是纯粹无聊。但很明显楼主是提前给了题目,随便你去查资料文档。这种开卷考试不就考察下实习生自我学习,寻找资料的能力和基础理论的深度么?
    这么简单写出来是基本要求,如果能在看文档的时候了解周边的知识说明还不错,要是能准确记住各个环节,说明很有天赋,起码记忆力惊人,一遍过去就没什么问题。
    GG668v26Fd55CP5W
    GG668v26Fd55CP5W
    Mar 26, 2018 via iPhone
    69
    @imcnan 这无非是想考察对 http 协议的理解,用 curl 一样可以看出来,非要用冷门的东西,舍本逐末,那你试试用 file_get_contents,stream_socket 之类写,看看你自己要撸多久
    MeteorCat
    MeteorCat
    Mar 26, 2018 via Android
    70
    对了,如果能够用伪代码实现并且说明要点的话,我个人感觉就算通过了,比如 HTTP 的协议 header 构建,body 构建和分包问题、get/post 的传输区别等,不需要具体代码,写个伪代码就行了我感觉哪怕不完善也说明有基础只是生疏了,但是完全没概念的话,我感觉确实是不合格的
    hheedat
    hheedat
    Mar 26, 2018
    71
    我能写出来,不过我觉得这题没啥意思
    livc
    livc
    Mar 26, 2018❤️1
    72
    面试这东西吧,最好现场直接面,过就过,不过就告诉不过,继续面别的家,一点不影响。
    最讨厌提前给点题目,或者说回去学习一个月之后欢迎再面试这种,浪费时间。

    很多时候跟一个新认识的人交流,聊几句就知道水平如何,能不能合得来了。
    kennedy32
    kennedy32
    Mar 26, 2018
    73
    实习生给 7 万?
    future0906
    future0906
    Mar 26, 2018
    74
    不就是写个 http 解析的状态机?随便写啊。。。。

    那么问题来了,既然我要手写 http 解析,我为什么还要用 php ?
    2225377fjs
    2225377fjs
    Mar 26, 2018
    75
    能力强的看到你这题目还要过来,那也是见了鬼了
    vastwelkin
    vastwelkin
    Mar 26, 2018
    76
    是这样的,一道面试题最重要的是有针对性地考察面试者的某方面的能力。
    如果想考察面试者对 HTTP 协议的理解,可以考察面试者针对不同的 header 解析,或者直截了当问 chunk 的概念等等;如果想考察面试者对 PHP 机制的理解,可以考 php session,甚至深挖 php session 的不同实现和部署。
    想用一道大而全而基础的题来考察面试者的综合能力,估计可能会比较难,考察结果也未必客观准确。
    Hardrain
    Hardrain
    Mar 26, 2018
    77
    如果用 curl,算通过吗?
    一定要用 fsocksopen ?
    jinganchuqi
    jinganchuqi
    Mar 26, 2018 via iPhone
    78
    这个我以前在鸟哥博客中刚好见过,自己还动手实现过 要不你给我 7W😂
    leveraging
    leveraging
    Mar 26, 2018
    79
    熟悉这两函数的 fwrite、fread 返回值入参的意义是啥?背完 php 文档就有 7W 了么
    assad
    assad
    Mar 26, 2018 via Android
    80
    不查文档,估计你也写不出来,除非你背书了
    nicktogo
    nicktogo
    Mar 26, 2018 via iPhone
    81
    能给 7w 就有人能秒做出来
    kookxiang
    kookxiang
    Mar 26, 2018
    82
    看了下,我好像写得出来……
    不对… 大学写过。。。
    onion83
    onion83
    Mar 26, 2018❤️7
    83
    其实吧,作为一名快速开发业务的语言,楼主这样问其实对实际的工作意义不大的,如果招聘的实习生满足一般的数据库添删改查,会 css/html,懂点 js,且有点数据校验意识,能完整靠自己开发出一个小系统足够了,作为实习生有成就感,作为企业也有实际用处。

    而且,如果楼主确实需要明确考察应试者对 Socket 操作的熟悉程度,为何不使用更为底层的 Streams 系列函数?顺便考察 udp/tcp 的使用场景,buf 应该设多大,拆包和粘包的方法,边界处理,超时等。如果对方这方面很熟悉,可以进一步考察为什么 buf 要设这么大,了解 MTU、MSS 对程序的影响么。

    回到楼主的问题,我回抛两个问题给大家思考:

    1、在使用 POST 往服务器提交数据的时候,有没有遇到服务器返回 100 的情况,为什么不是 200 以及如何处理。
    2、请使用 fsopen 函数,指定路径,实现文件分块 POST 上传( multipart/form-data )

    我觉得作为一个企业的面试官,首先自己心态要平和,想清楚你为企业招聘的是 “工程师” 还是 “科学家”。在契合企业利益的前提下,尽可能满足初入职场新人的求职体验,为其指引正确的职业成长路线。

    而不是以刷 LeetCode 为荣,以写 CRUD 为耻。
    gamexg
    gamexg
    Mar 26, 2018
    84
    应该是 php 工作中用的比较少。
    go 表示成天的写网络应用,cookie、文件上传需要查资料,其他的没什么问题。

    不过提前提供题目还搞不定,就太奇葩了。
    xcssum
    xcssum
    Mar 26, 2018 via iPhone❤️1
    85
    这个题不算难吧,主要是这种重复造简单轮子的事情吧,做得出来的懒得做,多半最后也懒得来你们公司,我觉得这题可能起的负面作用更大一些
    zjyl1994
    zjyl1994
    Mar 26, 2018
    86
    怎么说呢,对 CRUD 实习生太难也没必要,对手撸 HTTP 的老司机,谁会来面实习岗啊。
    rekulas
    rekulas
    Mar 26, 2018
    87
    感觉出这种没什么意义,这题考程序员对这几个(普通项目可能一辈子都用不到的)函数的用法以及对网络协议的熟悉,能上网查文档的话正常 1 年经验以上的应该可以写出来,但这样似乎你也只能证明对方查阅和理解文档能力尚可吧。。。

    我面试就喜欢出不依赖任何类库、函数的基本算法逻辑题目,然后询问面试者对这个流程的理解以及考验对方算法水平,就我以前的接触来看,经验丰富的不一定算法高,但是算法好的解决问题的能力越强,经验越丰富
    jhdxr
    jhdxr
    Mar 26, 2018
    88
    这题目在提前给出的情况下,我实在没能看出有这么多喷点所在啊。。。而且手撸一个 http client,我觉得再往前推几年虚拟主机盛行的年代不是必备技能么?毕竟谁知道环境里装没装 curl,只能所有可能的方式都写一遍来尝试啊。。。
    okzpy9425
    okzpy9425
    Mar 26, 2018
    89
    题不难,就是没什么意义。 当然,如果你们公司就是专门搞 web 服务器开发的另说。。
    bolide2005
    bolide2005
    Mar 26, 2018
    90
    已经提前给题目的话没毛病,这都开卷了,程序员解决不了基础技术问题?

    面试怎么问有意义的问题?问了你们又要说,‘拿业务问题在面试的时候找解决办法,low ’
    cnwtex
    cnwtex
    Mar 26, 2018
    91
    php -S localhost:8000
    bucky
    bucky
    Mar 26, 2018
    92
    偶尔有提前背锅题目的,说明大多数人根本就没看到你的题目,应该都是海投
    greatbody
    greatbody
    Mar 26, 2018
    93
    很简单啊
    fengyj
    fengyj
    Mar 26, 2018 via Android
    94
    现在实习生都要面对这种刁难不常见的那种题么?
    easylee
    easylee
    Mar 26, 2018
    95
    在校生......在 V2EX 看到很多招聘要求或者大家给出的面试题复现,里面的操作题笔试题我能很快搞定,基本站撸,但是一说实现方式和查文档之类的,死翘翘。
    我这样是不是很危险?卧槽!
    iyaozhen
    iyaozhen
    Mar 26, 2018 via Android
    96
    如果是提前告诉的还可以接受。要是现场出这个有点过了。还不如手写快排
    akira
    akira
    Mar 27, 2018
    97
    这道题应该是加分题,我猜测大部分写服务器端的都不会做
    oh
    oh
    Mar 27, 2018
    98
    @onion83 老司机说得好 心态也好 手动支持
    johnnie502
    johnnie502
    Mar 27, 2018❤️1
    99
    写不出来,满足了楼主的存在感,给 7K 一个月
    写出来了,让楼主出丑非常不爽,给 7W 一年
    rubycedar
    rubycedar
    Mar 27, 2018 via iPhone
    100
    瑟瑟发抖
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4242 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 302ms · UTC 08:38 · PVG 16:38 · LAX 00:38 · JFK 03:38
    ♥ Do have faith in what you're doing.