
1 takato Oct 29, 2014 写个伪代码呗。 |
2 tempdban Oct 29, 2014 via Android 如果您的定位是"玩家",那会不会都是无所谓。 如果您对自己定位是“程序员”,数据结构和算算法不过关可说不过去…… |
3 auser Oct 29, 2014 via Android 给他看编程珠玑上那句话 :) |
4 lzt163 Oct 29, 2014 个人认为要会写但是不用可以立刻写出来。。。 |
5 em70 Oct 29, 2014 via Android 手写真没必要,需要用的时候会Google一段代码来解决问题就是称职的程序员了 |
8 limbo0 Oct 29, 2014 python程序员就不是程序员了? |
9 kamil Oct 29, 2014 使用Python不久,自己试着写了一个,完全是C系思路,不知道用Python有没有更好写法,望高手指教。 l = range(0, 100) k = 12 def binary_search(l, k): start = 0 end = len(l) - 1 while start <= end: mid = (start + end) / 2 if k == l[mid]: return mid elif k < l[mid]: end = mid - 1 else: start = mid + 1 return None print binary_search(l, k) |
11 erse Oct 29, 2014 很bs这样的 但是还是写写吧 |
12 yushiro Oct 29, 2014 二分查找法。。。。。。 这个很容易的吧, 楼主不会写不应该啊。 |
13 JoeShu OP @limbo0 倒不是这个原因。主要一听到有点吓到了,又是手写.先用python写,写一半就不认识自己的代码了,后来又换成了c,写着写着变成了另外一种自己不认识的语言了,有点嫌弃自己了 |
15 HerrDu Oct 29, 2014 前端被要求写过快速排序。 |
16 EPr2hh6LADQWqRVH Oct 29, 2014 递归呗 |
17 dingyaguang117 Oct 29, 2014 这个基本功了吧 |
18 JoeShu OP @tempdban 对方通过猎头找到我的,哪想到还需要准备这个啊。我要检讨,当时确实有点心态失衡,有点愤怒。给点时间应该能写的出来。 |
19 staticor Oct 29, 2014 这还算一般、主流的 要是遇到那种必须用cpp写的。。(尽管requirement中写的python) :p |
20 nevernet Oct 29, 2014 |
22 jox Oct 29, 2014 binary search是很重要的算法,这种算法肯定得整明白啊,写个伪代码又不难 |
23 Shared Oct 29, 2014 via iPhone 如果连这么简单的算法都不会写,还是不要说自己是程序员比较好、我一般叫自己编程爱好者 |
24 liuyl Oct 29, 2014 手写二分都写不了,有点说不过去了。。 |
25 233 Oct 29, 2014 二分查找很简单吧...想稍微了解点算法,二分查找是绕不过去的 而且通过猎头找也没什么稀奇的,上海很多工厂类型公司招薪资5K-8K的码农都是靠猎头广撒网 |
27 qiumaoyuan Oct 29, 2014 我感觉这不是简单的写不写的问题。首先得看他招聘的是什么职位,比如招个 Web 开发的要我写二分查找,我会想这公司是不是经常干一些自己都不知道到底是在干嘛的事情。去不去值得考虑一下。很多时候面试不仅仅是公司从你这获取信息。 |
28 bingu Oct 29, 2014 巧了,今天刚查了二分查找法,什么叫伪代码啊? 我是编程爱好者啊。 |
30 MasterYoda Oct 29, 2014 |
31 EPr2hh6LADQWqRVH Oct 29, 2014 @JoeShu 此言差矣,递归直击算法的本质 |
32 apex42 Oct 29, 2014 别给程序员丢人了 |
33 binux Oct 29, 2014 现在的程序员连二分都不会写了吗? 原来还是快排的。 下次是不是要变成求数组最大值都不会了。。 |
34 tioover Oct 29, 2014 之前去实习,给的题就有一道,花了好长时间才写对(而且是类似 Hack 的方法)瞬间感觉自己弱逼…… |
35 tioover Oct 29, 2014 二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。一开始,范围覆盖整个数组。将数组的中间项与T进行比较,可以排除一半元素,范围缩小一半。就这样反复比较,反复缩小范围,最终就会在数组中找到T,或者确定原以为T所在的范围实际为空。对于包含N个元素的表,整个查找过程大约要经过log(2)N次比较。 多数程序员都觉得只要理解了上面的描述,写出代码就不难了;但事实并非如此。如果你不认同这一点,最好的办法就是放下书本,自己动手写一写。试试吧。 我在贝尔实验室和IBM的时候都出过这道考题。那些专业的程序员有几个小时的时间,可以用他们选择的语言把上面的描述写出来;写出高级伪代码也可以。考试结束后,差不多所有程序员都认为自己写出了正确的程序。于是,我们花了半个钟头来看他们编写的代码经过测试用例验证的结果。几次课,一百多人的结果相差无几:90%的程序员写的程序中有bug(我并不认为没有bug的代码就正确)。 我很惊讶:在足够的时间内,只有大约10%的专业程序员可以把这个小程序写对。但写不对这个小程序的还不止这些人:高德纳在《计算机程序设计的艺术 第3卷 排序和查找》第6.2.1节的“历史与参考文献”部分指出,虽然早在1946年就有人将二分查找的方法公诸于世,但直到1962年才有人写出没有bug的二分查找程序。 |
36 ven Oct 29, 2014 我觉得二分查找应该算比较基础的算法~作为程序员,手写应该没难度吧~ |
37 ffffwh Oct 29, 2014 吓得我立马去写了.. |
38 est Ot 29, 2014 via Android 你问面试官要不比一比一行python解八皇后看谁先写出来? |
39 duzhe0 Oct 29, 2014 二分又不复杂, 手写一下不算过份 |
40 noanti Oct 29, 2014 你是来搞笑的么。python里面二分就不用手写了? |
41 zmj1316 Oct 29, 2014 写个一般的不是随手的么,当然要没有bug可能要多想想啊 |
42 lyragosa Oct 29, 2014 作为一个编程爱好者,百度了一下,终于知道了“什么是二分查找”…… 其实我觉得我们这种非科班程序员……好吧,非科班编程爱好者来说,Glossary的确是个难点。 好多看起来高大上的名词一查百科就:“靠,原来不就是这个么。” |
44 RobberPhex Oct 29, 2014 @lyragosa 难道非科班程序员就不用读书了么? |
45 krafttuc Oct 29, 2014 这应该算是基础了吧 |
46 hahastudio Oct 29, 2014 太可怕了,现在这么水就敢去面试了么= = |
47 mhycy Oct 29, 2014 |
48 skybr Oct 29, 2014 就算不会写也该知道import bisect啊. |
49 treo Oct 29, 2014 楼主是来反串黑python的吧.. |
50 cloudzhou Oct 29, 2014 这是最基本的算法,最近刚好在给人面试,自己想出来的一些题目,供大家参考: 1 走台阶问题: 很长的台阶,共有 X 级,一个大人每次可以走 m级 或者 n级,如果最后剩下不足 m级 或者 n级,那就算一步走完,问有几种不同的走法。 比如 7 级的台阶,每次可以走 2级 和 3级,有 5 种走法: 2->2->2->1 3->2->2 2->3->2 2->2->3 3->3->1 有两种解法: 1 动态规划 2 排列组合 2 能否求零问题: 给出一组正数,随意排列组合,每个正数使用且只使用一次,使用 +, - ,判断能否得到 0。 比如 {1,3,7,8,11} 那么 11 - 8 - 7 + 3 + 1 = 0。 而 {1,3,7} 那么无论怎么排列和+-都没办法得到 0。 解法:贪心求最优解 3 给出一组正数和目标值,判断能否在这组正数里每个数乘以一个非负数求和得到目标值。 比如 {3, 4} 目标值是 17,那么可以通过 3*3 + 2*4 = 17。 {3, 4} 目标值是 18,那么可以通过 6*3 + 0*4 = 18、 2*3 + 3*4 = 18 等等。 而如果 {9, 7} 目标值是 19,没办法找到合适的 非负数相乘求和 得到 19。 解法:这是一个 DFS 遍历的问题。 4 另外就是一些现实的问题,比如怎么简单实现一个 LRU cache。 解法:hash + 双向链表,能考一些编码细节。 这些题目虽然有些理论化,但是还是能看出编码能力的。 |
51 zts1993 Oct 29, 2014 二分都写出来还好意思。。。。。都没问题快排,这都不肯写,给人的影响就是态度不好。。。 |
52 bolasblack Oct 29, 2014 虽然我觉得楼主的“作为一个 Python 程序员”这个前提很奇怪,不过我疑惑的是,在很多地方类似这种“二分查找”或者“快速排序”之类的算法,真的有那么重要吗?实话说我没有遇到过需要自己写这种算法的场景啊,感觉真正用到这种算法的时候也有库可以解决问题啊,真的需要自己写的时候,找个库的代码来读,然后找些解释算法的逻辑的资料来读不就好了吗? |
53 caixiexin Oct 29, 2014 对于我们这种经常做业务软件开发的码农来说,算法确实已经是好遥远的事了= = 二分查找我还记得思路,写代码就不行了= = |
54 F281M6Dh8DXpD1g2 Oct 29, 2014 楼上说简单的,自己先手写一遍试试呗~ |
55 chuan Oct 29, 2014 某大牛说过“迭代者为人,递归者为神” |
56 mahone3297 Oct 29, 2014 还是好好写吧。。。 |
58 c742435 Oct 29, 2014 |
59 geew Oct 29, 2014 |
60 mhycy Oct 29, 2014 |
61 mhycy Oct 29, 2014 说回来... 面试时候最怕给的空间不足还要手写. 给个windows记事本上机写都好.... |
62 Neveroldmilk Oct 29, 2014 这都写不出来,还是别当程序员了。 |
63 tracebundy Oct 29, 2014 懂原理不难吧,之前面试还让手写快排 |
64 66beta Oct 29, 2014 楼主想开点,我去面试前端,人家还叫我在白板上写遍历二叉树呢 思路一说就行,但是写出来真心烦啊 |
65 soulgain Oct 29, 2014 这个太简单了,不应该不会,懒的写也就算了,不会实在说不过去啊! |
66 hahastudio Oct 29, 2014 @mhycy 先得会这些基础的 遇到不会的先别一下子缴械投降了,先装一装 哪怕脑子真的一片空白呢,装作思考的样子= = 尽量往自己会的算法上套 实在不行了,可以试着把自己能做到的程度说一下,比如: 某一些特殊情况我能想到,可以这样这样做 中间有一些步骤我不太清楚,但是之前和之后的可以这样这样做 |
67 kid177 Oct 29, 2014 有人说不会手写快排我忍了,作为程序员你说你连二分都不会吗? |
68 lincanbin Oct 29, 2014 你应聘的职位是什么?如果是WEB方面的Python程序员,那会不会是无所谓的。 很多面试官应聘Web后端、手机客户端、Web前端都问跳出来问二叉树、红黑树、冒泡排序、快速排序之类的,不知道问来干嘛? 实际上也不难,找本书突击几天就没问题了,如果是Web方面的Python程序员,以后基本没用到这些的机会。 |
69 YORYOR Oct 29, 2014 二分都不会 只会写helloworld? 还有一句话 talk is easy,give me code |
71 evlos Oct 29, 2014 via iPad 作为 Python 程序员,二分法都写不出来还打算理直气壮拒绝这也太那啥了吧 作为 Web 前后端,不会也就算了,但是人家愿不愿意接受还是个问题,其实花点时间做个题库也不难嘛 |
72 yangkeao Oct 29, 2014 二叉还是很简单的嘛~~~ 很可惜的告诉你们各种STL sort之后我是不会排序了的。。。。 |
73 xylophone21 Oct 29, 2014 基本上可以说明对方对你的定位低于你的期望. |
74 paomian Oct 29, 2014 手写二分不算啥吧 |
75 loryyang Oct 29, 2014 我觉得现在的情况是:最好不要再让面试者写这些大众题目了。因为有心的人会去准备,他们会把所有sort、所有基础数据结构相关的基础题目都去做一遍,记下来。这样就会出现面试不平等,考评内容对于一部分面试者来讲,是认真准备过的,这其实是不公平的。 当然,另一方面是:如果面试者真的把那么多内容都认真学习了,自身的水平确实也会提升很多。 我在想,我们是否可以这么来,我们准备一个高深一点偏一些的算法,然后准备好各种材料。让面试者现场学习,分析,然后现场写一些伪代码,或者代码实现一部分功能。在学习的时候面试官可以提供帮助。这不仅考察了大家关注的代码能力、思维能力,还考察了快速学习的能力(阅读文档,比如英文文档等),沟通能力(与面试官交流请教),抗压能力(算法本身较难)。再者,你可以提供电脑,让面试者可以进行Google等查阅资料。 |
76 notcome Oct 29, 2014 快排也就两个 filter 加 list comprehension 的事情,所以还是用堆排吧。但其实堆排三五分钟也就写出来了。二分这么水不会不应该呀。 (不要让我等小学生产生哦我不用念书了我现在去应聘也能找到个 10k 的工作了的念头好嘛) 不过个人真的神烦二分查找,每次都要调试一两次才搞定。 |
77 lijsf Oct 29, 2014 二分要写的没有任何bug还是很考验人的。 int binart_search(int* array,int n,int k) { int i=0; int j=n-1; while(i<=j) { int mid=(i+j)/2; if(array[mid]>k) j=mid-1; else if(array[mid]<k) i=mid+1; else return mid; } return -1; } |
78 semicircle21 Oct 29, 2014 楼主愤怒有理, 面试考官没经验, 根本就是校招的路子. |
79 YuenLeon Oct 29, 2014 没关系的,有次面试,我连32bit有符号数的表示范围都说错了,但不能说明我真的不会。 |
80 jsq2627 Oct 29, 2014 面试前稍微准备准备常用算法吧,什么样的面试官都有。 |
82 mengzhuo Oct 29, 2014 via iPad 某广告公司要求手写 排列组合 某头条要求30分钟内写没Bug的LRU 某乎要求时间O(1)的好友列表查询 某云公司要求当场8皇后 某浪要求用lambda 一行写逆排 楼主面的弱爆了 |
84 RIcter Oct 29, 2014 反正我不会算法,我不配当程序员,我还是去种地吧 |
86 Narcissu5 Oct 29, 2014 二分不会写也能有15K,忽然觉得人生灰暗T_T |
87 awsx Oct 29, 2014 当年企鹅面试,隔壁的前端的房间在考他写kmp呢 |
88 kmvan Oct 29, 2014 如果问什么是二分法,会不会被打死? |
89 xingzhi Oct 30, 2014 @tioover 想起这个了, 直至06年 java 才修复了一个二分法的bug。 ref: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=5045582 http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html |