101
archxm 2014-10-30 09:58:17 +08:00
算法,是在遇到一个实际的问题时,劳动人民经过了深思熟虑而想出来的,而面试官TMD要面试者在几个小时内想出来, 还是写在纸上, tmd不是有病是什么?
|
104
abcfyk 2014-10-30 10:18:38 +08:00
@dreampuf ++$i 应该比 $i++ 效率高点吧,$i++ 实际上等于 $i = $i + 1;会另开一个变量来保存新的值。 我猜的:)
|
105
clinkzlol 2014-10-30 11:20:03 +08:00 via Android
楼上几位,二分查找前要排序吧
|
107
lijsf 2014-10-30 11:32:48 +08:00
今年校招时腾讯和百度都有现场写代码的题。腾讯要求写字符串反转和strcmp。百度要求写快排和求搜索树上两个节点的最近父节点。
|
109
viila 2014-10-30 12:21:55 +08:00
校招卡人必备,社招这就没意思了。
非算法职位而在面试的时候让人写快排,写排序简直就是面试官能力不行的体现。 敲代码十几年了,当年搞oi也能默写得一手qsort,现在毛都忘光了。 当前能力只剩下找出需要使用排序的地方,找到算法源码或者移植到十种其他语言使用。 面试官行吗? |
111
loryyang 2014-10-30 12:59:22 +08:00
@archxm 我不知道你at做什么。你发泄的这些情绪我不想再见到了,已block,谢谢!
首先关于大公司喜欢浪费面试者时间:对于公司而言。公司招人又不是做慈善,肯定是要严格考察面试者的,特别是现在面试者喜欢针对性准备面试题,面试时间肯定会长一些,这样才能真正看出面试者的水平。这是个困境,面试官和面试者的目标完全不一致,一方想知道优缺点,另一方只想表达优点。只有长时间深入的沟通可以解决。而对于面试者而言,想去一个公司工作,却连半天时间也不想浪费,这,你是真想找个工作? 其次关于面试内容:我也不建议做算法题,这个不公平,原因是大部分人对算法本身不会很精通,在实际工作时也不会去写这些代码。但是我支持当面写代码,这个很考察能力,程序员就是写代码,如果连代码都写不好,那能发挥什么作用呢?但是,我不支持纸上写代码、不支持无网络写代码。面试者应该可以使用一台电脑,然后网络。就和工作时的状态一致。否则就是在尝试记忆各种api,毫无意义。至于不写算法题,写什么,那就找个比较实际的问题来写好了,比如分析一段日志,或者写一个简单的cache,或者实现几个标准库没有实现的api(比如C的string join by)。 最后驳斥你一个观点:”深思熟虑出来的东西,然后让面试者几小时想出来“。你就想想,求圆形面积这个难题,是否还需要你深思熟虑几十年才能想出来。 PS:关于面试内容只是针对招聘写代码的员工,架构师等高层人员另说。 |
112
cdxem713 2014-10-30 13:13:29 +08:00
昨天去搜狗面试前端也被考2分查找了,没写出来
|
114
nooper 2014-10-30 13:19:17 +08:00
最变态的就是你写出来django login的 login_required装饰器。
我回去看了下源代码。咳咳。 |
115
pythoner 2014-10-30 13:32:42 +08:00
赶紧去写了个二分法压压惊
|
116
msg7086 2014-10-30 13:36:21 +08:00
@loryyang 但是纸上编程是很常见的考法啊。大公司面试的时候几乎都是白板coding,而且基本都是算法题,而且基本都不会是二分这么简单的题。
(我考过的最简单的题大概是写一个heap。最难的大概是分区回文吧。 |
118
loryyang 2014-10-30 14:23:43 +08:00
@msg7086 嗯,因为好操作,简单。但是常见和方便不代表更好,如果有公司可以提供面试专用机,其实会更好。当时有道来我们学校招聘,就是租了学校的机房,大家现场用机器答题的。当然因为没有面试官监督,所以我们不能上网。
题做出来了,没有offer,这个事情其实挺尴尬的。招人好多时候靠缘分的,真的,切身体会。 |
119
archxm 2014-10-30 14:40:30 +08:00
@loryyang 不介意你屏蔽,但at你不是说让你看,只是让大伙看到是针对你的话, 你知道有些无良公司, 借着面试来学习经验吗? 反正我遇到过, 把你那些项目经历问个遍, 说了1个多小时, 完了说今天就到这里吧. 完全就是折腾人, 根本就不负责任, 我请假半天是要扣工资的. 你面试官算是在上班. 所以我现在面试就说只有周末有时间了.
我觉得招人的时候大家都表达点诚意来, 面试者去了这个陌生的地方面试, 也算拿出了诚意, 面试官也该好好准备下, 把要问的问题动点脑子好好想一想, 半个小时还问不出什么来, 就是能力问题了. 不知道v2ex的程序员是否同意. 圆的面积就一个公司 s= π *r平方, 多简单, 可是如果要让你证明这个公司呢? 多少人会? 写个简单的cache? cache确实是常用的伎俩, 不过有几人隔几天就写个cache的? 不会写cache还真没啥. 纸上写代码, 只能证明面试官脑残. 机上写代码, 也要看你面试官到底想考什么了, 有些陌生的算法题, 我还真能想出来, 不过也许要花2天时间, 但绝对不是2小时. |
120
dingyaguang117 2014-10-30 16:30:33 +08:00
@archxm 算法数据结构也分基础和高级的,我觉得让你当场徒手写AC自动机就过分了,写个二分还是一点都不过分的
|
121
ashin 2014-10-30 16:52:00 +08:00
算法一窍不通,不配当程序员,感觉自己再也找不到工作了
|
122
bolasblack 2014-10-30 16:56:14 +08:00 1
@archxm @我做什么,我是不配当程序员的 QAQ
|
123
archxm 2014-10-30 17:06:15 +08:00
@bolasblack 不好意思, 我看错了!
纸上写程序本来就是面试官对待面试的态度问题, 或者说智商问题, 不知道纸上写程序代表什么? 我在计算机上用IDE写个链表排序, 倒置什么的, 很快就写出来了, 但纸上写, 呵呵 如果面试官看到面试者纸上写的程序有BUG什么的, 就更加确认了其弱智程度. |
124
chuan 2014-10-30 22:01:14 +08:00
@MrGba2z To iterate is human, to recurse divine -L. Peter Deutsch.原始出处我没有查到。一个计算机科学的初学者很容易理解迭代的概念,然而对递归,至少我一开始接触汉诺塔问题时真心觉得递归很神奇。递归更偏向问题求解的本质,迭代则偏向计算机的冯诺依曼体系结构。机器是不懂递归的,编译器做的一个工作就是把递归转成循环。代码说递归,编译器来迭代实现它。
|
125
yangzh 2014-10-31 13:29:09 +08:00 via iPhone
当然可以。找工作是双向选择。
|
127
susu 2014-10-31 16:48:45 +08:00
看了回复我怎么觉得v2ex的算法逼格达不到v2ex标准啊。走过校招的人对二分查找这种简单的查找算法应该很熟悉吧
|
128
RainFlying 2014-11-05 17:30:39 +08:00
完了
看完之后我觉得还是回家种地吧 |
129
ming2281 2014-11-06 18:20:31 +08:00
@shuson 我来一个使用递归的,但是没有测试过效率
def binarySearch(sequence, element, lower=0, upper=None ): if upper is None: upper = len(sequence) middle = (lower + upper) / 2 if element > sequence[middle]: return binarySearch(sequence, element,middle+1, upper ) if element<sequence[middle]: return binarySearch(sequence, element, lower, middle) |