我司 PHP 面试题

2014-07-06 18:48:26 +08:00
 dongbeta
我们是一个位于美国/香港/北京的创业公司,我们致力于创建一个面向美国市场的专业金融服务网站。 关于招聘要求,薪资福利,项目发展请参考 https://careers.ngfplanner.com/

受 sofish/hire 启发,今天制作了一份题目放在:
https://github.com/dongbeta/hire

欢迎来踩 ☆*:.。. o(≧▽≦)o .。.:*☆
9266 次点击
所在节点    酷工作
78 条回复
xiaozi
2014-07-06 22:22:01 +08:00
@dongbeta 楼主要考基本功,不如直接笔试的时候 各种不同类型的变量进行比较,死记的基本嗝屁。
还有熟悉php的那些个内置函数才是比较重要的,不要重复造轮子。
还有比如switch in_array神马的都是弱类型比较也是可以考察一下的。
dongbeta
2014-07-06 22:22:37 +08:00
@Actrace 还有呢。

不过不再提示了。愿意试试的朋友可以参加一下。对于优秀的人才,其他都不是问题。
Actrace
2014-07-06 22:36:20 +08:00
@dongbeta
HTTP协议,GET参数长度,做后端开发不知道的话,真的应该TJJTDS。
这个又可以刷掉不少人哦。。。~
我面试不少人没有一个正确回答。后来只好把这个从面试里移除掉了。
baocaixiong
2014-07-06 22:37:52 +08:00
@dongbeta

https://gist.github.com/78f306e51628fb45c4f0.git

这个我刚刚试了试,最近喜欢用数组方法。
baocaixiong
2014-07-06 22:38:32 +08:00
raincious
2014-07-06 22:39:59 +08:00
@Actrace 我又来了,还得问PHPUnit用的咋样。原因我就掩面不说了……

还有一些规范,PSR-2。或者直接拿写好的代码来看,如果漂亮说明还是会注意代码风格的。
Actrace
2014-07-06 22:43:03 +08:00
@baocaixiong 不定参数的方式在IDE里就没有提示了。另外需求是两个参数。虽然说可以做得很灵活,但是不符合要求的吧?
这个代码看起来很高端,但是嵌套太多层代码质量严重蛋疼了。
另外你可以用 @raincious 的代码跑个分。。。我对这个比较感兴趣。。。第一次看到这么写的。。。
Actrace
2014-07-06 22:46:12 +08:00
@raincious 玩PHP那么多年了,PHPUnit在我心中一直都是传说。
baocaixiong
2014-07-06 22:47:17 +08:00
@Actrace 我现在操作数组的时候,只要是能用map, filter, reduce,这些函数的统统不用foreach了。

具体性能还没有仔细研究过呢,这么多嵌套我要是将closure拆到array_filter外面可能会好看点点。
另外:咋跑分?
baocaixiong
2014-07-06 22:49:12 +08:00
@Actrace 我刚进公司的时候,我被安排给一个项目补unittest,大概一个多月的时间,全部都在写phpunittest, 虽然痛苦不已,但是现在来看,我觉得unittest这个过程是必须的了。也更加深入了项目代码的理解。
当然,我现在写测试的速度很快,检查错误也很快,可能就是之前养成的
raincious
2014-07-06 22:52:38 +08:00
@Actrace 还好吧,我觉得对我这种不知道啥时候就掩面的,PHPUnit还是挺有用的……

我现在上比较重要的新模块都这么干了:



而且这样开发效率会稍微高点,因为毕竟不用让其他用不着的部分跑起来。以前都是在实际项目上做测试,然后一个页面刷新下整个服务都得开起来,比较麻烦。
xiaowangge
2014-07-06 22:54:47 +08:00
「您访问的是: https://careers.ngfplanner.com/

经检测发现该网站可能存在OpenSSL“心血”漏洞,登录该网站可能会泄漏你的账号和密码,建议你暂时不要登录。

如果您确认该网页不包含有欺诈内容,可以选择继续访问或者进行误报申诉」

Android手机访问时,腾讯管家报告。(^_^)
Actrace
2014-07-06 22:55:03 +08:00
@baocaixiong 请看30楼。
另外在过去的时代,据说是用结构体+关键字会比调用函数性能要好。所以老朽一直优先考虑使用这种解决方案来处理问题。
过多嵌套确实是会影响代码可读性的。
这个就需要综合考量了。
除非项目完全你自己一个人写,否则在做这种决定的时候最好先咨询其他人的意见。
Actrace
2014-07-06 23:01:55 +08:00
@raincious
@xiaowangge
有一些东西必须走完整流程。当你们碰到这样的问题时。
http://v2ex.com/t/121102
测试这种事情,怎么简单怎么来。
就拿刚刚那个30楼的测试来说,把代码copy下来放netbeans改改运行10秒都用不到。
如果用IDE开发的话,基本上80%的问题都能提前解决。
baocaixiong
2014-07-06 23:02:54 +08:00
@Actrace
@raincious

谢谢。我的慢多了。
原来跑分这么简单...
aveline
2014-07-06 23:11:23 +08:00
zhujinliang
2014-07-07 07:45:37 +08:00
第三题回头看看能不能用preg_filter搞一下
simapple
2014-07-07 08:26:57 +08:00
part 1 说不太好,YII laravel在真正使用于全环境的时候还是少,
part 2 推荐phpsimpledomparse 搞到数据很简单,除非页面数据来自认证和js渲染
part 3 不知道要考察啥,$arr会是多维数组么?换个思路,直接将要查找的元素组成一个数组,和原数组取交集怎么样?

楼主提供的待遇倒是诱惑力十足,满满的幸福啊
likexian
2014-07-07 09:29:14 +08:00
part 3

def filter(arr, check, check2):
....new_arr = [i for i in arr if check in i and check2 in i]

so, 老板,写什么php啊,我们换python吧,python是世界上最好的语言
555
2014-07-07 09:38:31 +08:00
part3和前面的感觉不在一个档次上

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/121229

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX