谁有面试phper的经验?帮一下忙

2014-01-02 10:33:29 +08:00
 dexter
能给一些phper 面试的题么?
最好配上答案。。。
谢谢了
6826 次点击
所在节点    程序员
39 条回复
subpo
2014-01-02 14:23:31 +08:00
@Ever 一个半小时最多出个demo吧,你说的全做完还不准用框架,这种人世间少有吧
ooh
2014-01-02 14:37:55 +08:00
mvc,路由,数据验证,sql,做网站就这些吧
Sunyanzi
2014-01-02 14:49:00 +08:00
招初级程序员用到的知识点方面 ... 能把 serialize 正确拼出来的人应该是有点基础的 ...

在这个基础上可以问跟缓存相关的问题 ... 这个函数都没听说过的话问了也是白问 ...

其他就是很烂俗的辨析 ... 这样的东西网上一抓一大把 ...

include / require / include_once / require_once 区别 ... echo / print / printf / print_r 区别一类的 ...

着重的点不在于他是否能答对 ... 而是他是否有一个愿意研究程序的心态 ...

我招聘这么久见到的人基本上分两类 ... 一种是真喜欢程序 ... 一种是听说这行挣钱来凑热闹 ...

上面的问题虽然简单 ... 但可以很容易的分离这两类人 ...

当然想要深层次的分离还有更高级的问题 ...

比如问问对现有的主流框架的看法 ... 问问自己实现框架的话会偏重哪方面 ...

问问几个对常见设计模式的理解比如 Singleton Observer Factory 这类的 ...

当然如果你还是觉得这些问题简单 ... 非要给他个下马威 ... 也可以问一些完全没用的偏门问题 ...

比如在没有手册的情况下试解释下面函数的用途 ... _ / levenshtein / hebrevc ...

比如试分析 echo '1' . print( 2 ) + 3; 这行代码返回的结果以及为什么 ...

这种莫名其妙的问题如果要想我分分钟能琢磨出上百个不重样的 ...

但事实上我个人很不喜欢这种把对方引诱到自己熟悉的领域然后以己之长攻彼之短的做法 ...

假如他连这种坑都能轻松过去的话 ... 说明或者是有准备 ... 或者是基础真的牢固到了一定程度 ...

基础知识的部分大概就这样 ... 挑一些答案明明白白写在手册里的问题问就好 ... 下面说实战 ...

实战方面也分两种 ... 一种是纸笔写程序 ... 一种是上机 ...

纸笔的程序这么久以来我最喜欢的还是两个问题 ...

一个是找一百以内的质数 ... 另一个是指定的数组重构 ...

同样 ... 能不能纸笔写出不出错的代码不重要 ... 重要的是思路 ...

找质数的题 ... 不知道什么叫质数或者素数的直接 PASS ...

写出从 1 穷举到 100 算法的可以差不多给到 3 ...

能直接想到以 2 步进然后用之前找到所有质数做除法的人绝对 6 起跳 ...

数组的题一般的描述是这样 ...

「在一个有序且所有成员均为整数的数组中插入一个新整数并维护原来的排序方式不变」 ...

题目有两个坑 ... 其一是我没说数组是正序还是倒序 ... 其二是我没说不能用系统函数 ...

能指出我这两个坑然后用 sort / rsort 函数两行完成这个题目的人 6 起跳 ...

自己完成一个数据插入算法的可以给到 3 ...

自己闷着吭哧一下午最后说要回去想一下再来告诉我结果的 PASS ...

在这两个问题之外的次选还有些杨辉三角完全背包鸡兔同笼猴子偷桃集市买鸡等等这类传统的问题 ...

我平常不问这些的原因是因为这类问题太古板了 ...

会的就是会不会的就不会 ... 看不出实现能力的差距 ... 而我偏重实现能力胜过算法能力 ...

如果公司看重算法能力的话 ... 纸笔写这个等级的算法也不是什么难事 ...

至于上机的程序基本都是各种 CRUD ... 给台断网的机器给个手册给个需求再给点时间 ...

我基本都是让对方当场写个 simple blog ... 除了 CRUD 之外还看如何实现权限系统 ...

顺便还能看看对 MySQL 的理解 ... 比如数据表设计 SQL 注入防范等等 ...

还能引出一些其他问题 ... 比如各类索引的区别 ... 假如你这个系统每天抗 1G pv 如何优化等等 ...

同样如果公司看重算法能力的话 ... 上机算法可以写八皇后 ... 能写出来的估计要 10 起跳了 ...

差不多就是这样 ... 上面说的都是纯粹的 php 层面的问题 ... 其他知识点随需而问就好 ...

需要他切模板就问问前端相关的问题 ... 需要他管服务器就问问操作系统相关的问题 ...

这个没有定数 ... 就不在这个帖子里讨论了 ...

我招聘别人的经历大概就是这样 ... 最后说一下我被招聘的经历好了 ...

我自己是没招过高级 php ... 但这两个月有面试几家公司 ...

没有一家问我任何 php 的问题 ... 基本都是偏重之前的项目经验和管理经验 ...

也就是说如果你真的需要有人可以 hold 住全场的话 ... 上面的问题其实都不重要了 ...

重要的是他之前做过什么 ... 有过怎样的成就 ... 问问这类问题就好 ...

总的来说面试终归只是一个过程 ... 我们的目的是招聘一个能帮忙的人 ...

面试中的技术问题不过是一道道门槛 ... 沟通和交流才是最主要的 ...

技术其实非常好培养 ... 但人品非常难 ... 如果发现有好苗子但招无妨 ... 慢慢带就是了 ...

更多的我这一时半会儿的也想不到什么 ... 就这样吧 ...
mahone3297
2014-01-02 14:54:12 +08:00
@PrideChung 这真能刷掉一大堆?
slixurd
2014-01-02 14:54:57 +08:00
八皇后可是大学算法考试必考题= =
mahone3297
2014-01-02 14:55:48 +08:00
@dexter 我一般会让他写一个排序算法。。。很简单的那种,就排序一个整形数组
另外,你可以问mysql,nosql,redis,memcached等
再根据他做过的项目谈重点。
heganj
2014-01-02 14:56:03 +08:00
我不用php,不过听说php不太严谨,你可以参考下,以此来作为考察点:

(以下截取自Q群聊天记录)

举个简单的例子,选出一个数组的某个子数组这个函数,里面如果只有一个item,那么返回item自身,而不是包含item的数组

再举个例子。。。变量名和成员变量名大小写不敏感,函数名和方法名大小写敏感

引用不存在的变量产生warning 引用不存在的方法产生fatal error

"0" == 0 //===>true

但是"0123"会解析成十进制的123,而0123会解析成八进制

再然后,<任意非纯数字字符串> == 0 //===>true

就是"aaa" == 0 //===> true
"0123" == 0 //===> false
"0123" == 123 //====>true

再然后 ((null==0) && (null < -1)) //===> true

我想起来了。。。。我当时写php的时候还遇到过一个大坑是这样的:类似shuffle那样的函数,返回的不是打乱的数组,而是一组打乱的下标
min
2014-01-02 14:56:51 +08:00
出去假装phper求职,把别的公司的php面试题目骗来即可
Sunyanzi
2014-01-02 15:13:37 +08:00
@slixurd 虽说是必考题 ... 但能过考试和能记在脑子里还是不太一样的 ...

至少我在这边招聘的时候 ... 很多写着计算机专业出身的人在我问起八皇后的时候都一脸茫然 ...

其实我个人在招聘的时候对学历和专业都没什么要求 ... 或者有根骨或者有灵性就好 ...

说来我突然想到一个事情 ... 我个人还蛮反感很多社会上的 php 速成班出来的人 ...

简历上除了名字和生日不同其他都一模一样 ...

满眼看过去各种精通 ... 各种熟练掌握 ... 问起来各种不会 ... 也没有想要自己去学的意识 ...

我承认可能是我管中窥豹以偏概全了 ...

反正这么久我遇到的这类人基本都是混日子的 ... 靠谱的少之又少 ...

虽然可能有点偏激也算我的一个经验 ... 写在这里供参考 ... 也希望 LZ 的情况能比我好吧 ...
jarlyyn
2014-01-02 15:24:00 +08:00
这个问题是最不能问别人的。
关键不是怎么去面试一个phper,而是你需要一个怎么样的员工。
比如只是做view模板的,就arry操作,循环,各种文字处理。
如果是做开发的,那么各式继承,构架。
如果是做数据库操作一块的,那么就是数据库的各种处理,防注入啥的吧?
程序员在不同的公司的工作都不同,怎么能指望别人给面试题目?
mcwanderer
2014-01-02 17:33:09 +08:00
以上大神,回答的好精彩。
sun019
2014-01-02 18:19:52 +08:00
增删改查
操作数据库 基本的sql
对字符串 数组操作
MVC 框架 了解程度
项目经验
baocaixiong
2014-01-02 20:05:07 +08:00
@Sunyanzi 还是这个兄弟的serialize切实际,我之前打死记不住。。哈哈
jarcher
2014-01-02 21:06:32 +08:00
没有面试题,就看你做的项目问...
Ever
2014-01-02 21:12:48 +08:00
@raincious 有自己的框架有加分, 不过我觉得"考试"还得闭卷吧, 时间是一个半小时,不是一个小时。

@subpo 对, 我说了看完成度, 不要求搞多完善的。

最基本的文章和评论的CRUD及分页总得搞定,参数的过滤(包括sql防注入)、不存在xss和csrf问题是最基本的, 还有按年月日归类的count by group, 其他的tags、分类、feed、traceback这些是没要求的, 能完成当然给加分了。

文章的基本展示就是htmlspecialchars和nl2br, 审的时候能说出wysiwyg+htmlpurifier、 bbcode/ubb、markdown都是有加分的。

管理员登录验证搞个http basic authentication就算ok了, 要不记得相关header, 允许看的php手册里其实就有现成的。

这种偏重基本功的测试, 有本手册就够了, 能上网或者用框架就不准了, 比如: 甲上网copy了分页和db类, 乙composer了一份doctrine, 丙用yii或者cakephp根据表直接生成了scaffold, 丁直接clone了github上一个玩票的blog.
subpo
2014-01-02 22:45:04 +08:00
@Sunyanzi 一年前还是两年前我在v2ex上投简历的时候你问我去不去厦门玩玩,现在看了你的回复,我只想说...按照我当时的水平,幸亏没去,去了就是自取其辱么...
dexter
2014-01-03 11:07:18 +08:00
再次感谢 楼上全体!
Sunyanzi
2014-01-03 17:36:41 +08:00
@subpo 依然随时欢迎过来玩呀 ... 或者我杀奔苏州找你去玩也可以 ... 求包养 ... 不饿死就行 ...

嘛 ... 压压惊压压惊 ... 怎么说呢 ... 完全不用害怕啦 ... 自取其辱什么的也完全不会发生的说 ...

通常的面试 ... 我和被面试的人都是初次相见 ... 我们的人生轨迹很可能只会相交这一个来小时 ...

面试之后如果不成 ... 很可能一个星期过去他不记得我我也不记得他 ... 仿佛我们从未相遇过 ...

所以我要用这短短的时间从他身上挖掘到尽可能多的东西 ... 过程就会比较简单粗暴啦 ...

而在我身处的圈子里发出的邀请完全是另外一回事 ... 比如之前的论坛邀请 ...

我们虽然没见过面但我们彼此认识 ... 看你的发言就可以大概对你有所了解 ...

所以就算没有基础 ... 只要愿意过来 ... 愿意跟着我学 ... 我就可以从零带起的说 ...

说来我还蛮爱干这个事情的 ... 之前在公司也招了一些学 Java 完全没接触过 php 的大学生硬带 ...

熟人的话 ... 起薪大概会比招过来没基础的陌生人翻一倍这样 ... 算是特别优待吧 ..?
Sunyanzi
2014-01-03 18:08:24 +08:00
趁着无聊顺便提一下 @heganj 27 楼的回复里面的几个不准确的地方吧 ...

和帖子的主题完全没关系 ... 单纯是看着别扭而已 ...

「再举个例子。。。变量名和成员变量名大小写不敏感,函数名和方法名大小写敏感」 ...

这个正好说反了 ...

所有与变量或常量相关的名称皆为大小写敏感的 ... 而函数名方法名类名大小写不敏感 ...

「引用不存在的变量产生warning 引用不存在的方法产生fatal error」 ...

引用不存在的变量或常量会产生 Notice 级别的错误 ... 而不是 Warning 级别的错误 ...

引用不存在的函数方法或类是产生 Fatal error 级别的错误没错 ...

「类似shuffle那样的函数,返回的不是打乱的数组,而是一组打乱的下标」 ...

事实上 php 的 shuffle 函数的返回是一个成功与否的布尔值 ... 执行完成原数组会直接被打乱 ...

返回一组被打乱下标的函数叫 array_rand ... 用途是在数组里挑选一个或多个随机成员 ...

所以我觉得大概是你用错了函数 ..?

至于变量类型转化的疑问 ... php 作为一个弱变量类型的语言 ... 得到这样的结果也不奇怪啦 ...

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

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

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

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

© 2021 V2EX