1
seki 2014-08-14 15:20:51 +08:00
该说我看到插入排序也想了很久么……
不是我看不起算法,而是一般情况下不用,记不住 呵,呵。 |
2
zkd8907 2014-08-14 15:23:13 +08:00
=。= 插入排序。。算是最简单的一种排序算法了。。
|
3
ywencn 2014-08-14 15:28:01 +08:00 1
这样可以么
:002 > [2,5,3,1,9].sort => [1, 2, 3, 5, 9] |
4
deving 2014-08-14 15:45:25 +08:00
我咋没遇到过这样的面试官呢?
|
6
ifconfig 2014-08-14 15:53:56 +08:00
你的是什么项目?和排序有什么关系?
如果你无法发掘一个人的优点,再符合你也没用。 |
7
coosir 2014-08-14 15:59:13 +08:00
这个和二线城市没关系吧
|
11
jsonline OP @ifconfig 他说插入排序不会,我说我告诉插入排序是这样这样这样的,就像打扑克时起牌一样的blablabla,懂了么?
他说懂了。 我说用代码写出来吧。 他不说话,也写不出来。 你觉得排序是重点么?重点是把思路变成代码的能力好么。 |
14
seki 2014-08-14 16:30:01 +08:00
|
16
lijsh 2014-08-14 16:30:45 +08:00
.sort(),搞掂!
|
19
q397064399 2014-08-14 16:32:11 +08:00
唯一知道 并且立马能编写出逻辑算法图的就是 最简单 最容易 最JB无聊的 冒泡排序
|
20
lyragosa 2014-08-14 16:35:14 +08:00 2
看来要是我去楼主的公司面试肯定被刷掉了……
赶紧百度一下插入排序压压惊…… |
21
caiych 2014-08-14 16:45:56 +08:00
…不知道楼上的各位是什么思路…面试问点基础的CS问题不是很正常的事情么…
排序作为很常用的算法被问很正常啊…实际上面试的时候各种排序都是热点问题啊… 楼主就是想吐槽一下被面试官精心挑选过的最简单的问题问倒的所谓程序员有什么问题么… |
23
dustinth 2014-08-14 16:58:05 +08:00
我觉得吧, 做企业开发的, 排序神马的基础算法真心用不上, 平时用的时候都是被给封装好的; 我觉得只要知道一些简单的概念, 比如时间复杂度和空间复杂度啥的, 知道关键的时候要去google, github就行了. 如果面试通过了, 也只能说他专门为了面试准备了算法知识.
|
24
dbfox 2014-08-14 16:59:42 +08:00
不知道 这些排序有什么用啊?基本上没用过
|
25
hahastudio 2014-08-14 17:03:33 +08:00
真的,如果是遇到“我们就差一个程序员了”的面试官,吐槽一下太应该了= =
可是吧,面试官就问了个插入排序= = 我看 LZ 的意思是面试的这帮人连去想一下的意愿都没有= = 这就太说不过去了= = 像插入排序这种级别的算法,我记得啊,当初竞赛书见过,我觉得很 low 的教材里见过,买的几本语言的书里也有拿来当样例的= = 哪怕没见过,听完描述想一想总可以啊= =插入排序干想还是能想出来的啊= = 总说面试官坑= =但是如果自己招式不够亮= =也别怪面试官不留情面啊= = |
26
ddzz 2014-08-14 17:10:46 +08:00
是用C语言项目吗?真的需要自己实现排序算法吗?不要重复制造轮子
|
27
sleeperqp 2014-08-14 17:12:30 +08:00
╭(╯^╰)╮为什么重点都抓住插入排序这件事,lz的意思是呵呵不愿意动手不愿意思考的人。
另外我想起了买菜又用不到导数三角函数这句话 233333 |
28
LostFirefly 2014-08-14 17:12:59 +08:00
说实在的,每次准备去尝试个新工作...还非的去复习下算法...真的很烦....尤其是我真的不知道,下个面试官打算问什么算法题....我假想了下,如果我以面试者的身份参加了楼主的面试....估计我也多半支支吾吾了...可能方向不一样吧...Android我这4年就没用过算法...
|
29
LostFirefly 2014-08-14 17:17:29 +08:00
关于面试,我一般还是问项目经历,承担的角色,完成了什么,重点问项目中难实现的部分,考察是否是其完成的,以及有一些,没做过就绝对不知道的一些必然的坑点...回答的出来的,那是真做过,叫经验...回答不出来的...多半在项目中混着走的...
|
31
hoogle 2014-08-14 17:23:23 +08:00 via iPhone
哈哈 发现因为不会写插入排序瞬间少了好几K工资的样子 该努力了
|
32
sivacohan 2014-08-14 17:24:19 +08:00 via Android
我挺理解楼主的。
下次楼主可以这样问。 给 5, 4 ,1 ,2排序。 然后看他怎么做的。 以Python 为例的话,首先看函数怎么传参。如果没写函数的话, 就问 5 4 1 2 6怎么办。 如果直接list sort了,就问他逆序怎么办。 然后再让他自己写个函数排序,如果是冒泡的话,就问能不能写个更快的。如果他表示不知道,你就简单介绍下插入排序。用自然语言描述。他写出伪代码就算通过。 在二三线城市,我们不期望开发有多牛。我们至少希望这个人有一定学习能力,解决问题的能力。 |
33
yxz00 2014-08-14 17:24:36 +08:00 3
叫你们写插入排序都抱怨。。。要是遇上让你实现红黑树的你不得掀桌子?
这年头面试到了只能考写swap了?真是智商上的优越感油然而生。 |
34
notte 2014-08-14 17:30:35 +08:00
这个我也愣了下,实际中写算法都是稳定版的非迭代快速排序记得清,毕竟实用,插入排序很少见用的。
|
35
hahastudio 2014-08-14 17:31:26 +08:00
@sivacohan 如果是 Python 的话= =我们可以各种玩= =
逆序? list(reversed(sorted(lst))) 想自定义 cmp, key?可以写好函数传给 sorted= = 除非你说一定要自己写,否则 Python 还真有辙满足你的各种基本需求= = |
36
DRcoding 2014-08-14 17:38:03 +08:00
我知道插入排序,可是我真不知道 "起牌"是啥。 :)
|
37
shyrock 2014-08-14 17:42:12 +08:00
作为应聘者,我发现自己真答不上来什么是插入排序,看来我的简历都不好意思写精通C++、精通数据结构啊。。。
作为招聘者,除非是招应届生,没有什么项目经验可问,才会问一些数据结构和算法知识。找有经验的攻城狮,一般就问项目经验和设计模式之类的。。。 顺便吐个槽,我觉得一线城市的程序员答上这个的几率不会高。。。 |
38
jianghu52 2014-08-14 17:43:58 +08:00
好吧,作为二线城市的程序猿,我默默的退散了。不过python确实可以很方便的插入排序。
|
39
piglei 2014-08-14 17:44:18 +08:00
我支持楼主的想法,考察的并不是知道不知道这个排序算法,考察的是把算法转化为代码的能力。
|
40
vicalloy 2014-08-14 17:48:15 +08:00 via Android
用笔写代码真心不习惯,顶多写伪码。
常用算法各语言都有现成的库,真心复杂的算法就不是立马能搞定的。 |
42
oldcai 2014-08-14 18:00:15 +08:00
|
43
Mutoo 2014-08-14 18:04:22 +08:00
表示经常把选择排序和插入排序搞混
|
44
vicalloy 2014-08-14 18:08:33 +08:00 via Android
说到底面试就和找对象一样也看个眼缘,不对眼就算了。
一个姑娘即使再美,遇到不喜欢她这一型的也是没辙。 |
45
YouXia 2014-08-14 18:09:28 +08:00 1
为什么这么多人喷楼主,基础数据结构和算法不是每个程序员都应该具备的基础技能之一吗?
|
47
kafkakevin 2014-08-14 18:23:24 +08:00
码农里面不会装操作系统的都大有人在。
|
48
subpo 2014-08-14 18:34:56 +08:00
javascript array.sort() ...
|
49
MarioLuisGarcia 2014-08-14 18:38:44 +08:00
随便什么语言? 你说的哦!?
sorted( [2,5,3,1,9]) |
50
YouXia 2014-08-14 18:39:25 +08:00 1
@sandideas
问题楼主说的这个是最基础的东西啊,这些都是需要掌握的,不可能什么东西都现靠百度、Google吧。 我见过面试让手写红黑树、线段树、B+树的,这种确实不应该,但是依然有大牛能写出来。。。 |
51
lsylsy2 2014-08-14 18:41:59 +08:00
@sandideas 插入排序这种真的是基础的不能再基础了
插入、选择、冒泡这种都是 for (i...) for (j...) if a[i]>a[j] swap(i,j) 的形式,在楼主 “我会告诉他插入排序是这样这样这样的,就像打扑克时起牌一样的blablabla” 这样说过之后还不知道的就…… |
52
msg7086 2014-08-14 18:43:18 +08:00 via iPhone
我面试的时候,面试官让我给heap sort写一个heap
|
53
anjianshi 2014-08-14 18:44:07 +08:00
虽然我也不懂插入排序,而且我也从来没看过算法书,不过我感觉一个程序员,别人都把实现思路告诉你而且你自己都说自己懂了,结果还实现不出来就有点说不过去了
但是,希望楼主也为应聘者考虑一下,面试的时候总是很紧张的,你突然冒出插入排序这么个东西就已经很蒙了,然后又来一句“跟扑克起牌一样”。我去,扑克起牌又是什么东西啊,我真心没打过几次扑克啊。面试者很可能冒出这种心理活动。结果神经越发紧张,大脑跟不上节奏,本来能理解、实现的东西也弄不出来了。 |
54
yangkeao 2014-08-14 18:50:17 +08:00
|
55
sivacohan 2014-08-14 18:51:14 +08:00 via Android
@hahastudio 要,要,要。Python基础都这么熟了还说啥。
|
56
nicodelee 2014-08-14 18:51:41 +08:00
JAVA实现:
int[] data = {2,5,3,1,9}; Arrays.sort(data); System.out.println(Arrays.toString(data)); |
58
ovalley 2014-08-14 18:58:16 +08:00
目测楼主在武汉
|
59
GtDzx 2014-08-14 19:02:27 +08:00
[AD] @jsonline 想找算法牛人欢迎赞助我们的编程挑战赛,在选手里找人~ http://hihocoder.com/contests/past
题目难度杠杠的,给我们挑战赛出题的人正在美国参加google code jam呢~ |
61
manfay 2014-08-14 19:08:09 +08:00
楼主不仅说明了像打扑克起牌,也说了blablabla(即解释什么是起牌),并且问懂不懂,对方说懂了。如果这样还写不出来,真不应该。
|
62
yangkeao 2014-08-14 19:17:08 +08:00
@yxz00 其实现在信息奥赛的基本都这样。能STL都STL了,其余逼不得已必须要用就试着去理解,去记忆。
然后能写的基本都是前两代的了//那时候不允许使用STL 我们都知道有STL,老师讲各种排序时也没认真听。//心生惭愧 |
65
xuwenmang 2014-08-14 19:32:52 +08:00
1W- 工资,问这个扯淡;
1W+工资,不会这个扯淡! 好吧,我不是程序员 |
66
cloudzhou 2014-08-14 19:54:48 +08:00
我觉得面试官就应该问这些问题,如果只是名词不懂,可以讲解一下,但是代码一定自己能写出来。
如果我是应聘者,我会说我看一下wiki,然后就能给你写出来。 高级一点可以问问实际遇到的问题,比如我最近问人的面试题目: 对于注册的用户,如果希望限制一定的访问频率,比如每小时最多访问1000次网站,你准备怎么做? 可以有很多讨论空间: 1 具体语言、web框架的拦截器 2 怎么限定一定时间内访问次数 3 如何更加经济环保(比如利用 cache?因为访问是很频繁的一个操作) 4 如果自己设计一个小小的系统呢,怎么定义数据结构、算法 这是一个开放的题目。 现在好多程序员都觉得百度、google就搞定所有问题了,那只是代码的搬运工。 算法和数据结构就是计算机的核心,体现在你编程的很多细微之处。 |
67
liuchang0812 2014-08-14 20:11:19 +08:00
连插入都写不出来,还说自己会百度,会调用系统的库的码农。。。真是呵呵
|
68
leopardwei 2014-08-14 20:15:41 +08:00
其实面试这个算法,那个排序都是扯蛋。只能反应基础如何,是否熟悉。我面试更关注程序员的自学能力及解决问题的效率。
不会排序没关系,你会百度或者 google 都行,会善用工具。菜鸟会变成老鸟的,有快有慢而已,前提是别让我耳提面命教,有问题的时候能独立解决掉。这种程序员我很乐意招和培养。 |
69
HerrDu 2014-08-14 20:26:17 +08:00
搜狐面试的时候,让我写一个快速排序。然后果断写了一个冒泡排序上去。。。。。 算法写的杠杠的,估计去都去BAT什么的搞算法了吧。
|
70
Biwood 2014-08-14 20:31:27 +08:00
我看了那几种排序算法不止一遍,今天还看了阮一峰的博客,里面也有关于这几种算法的文章,但是到现在我仍然不会写,不是不想学,是写了一遍之后就从来没用过,时间一久就忘了
|
71
Ransford 2014-08-14 20:32:54 +08:00
这种水平的人来面试,说明你这公司也牛逼不到哪去。
|
72
nsa 2014-08-14 20:49:45 +08:00
楼主没问对方有学过数据结构吗?
|
73
Exin 2014-08-14 21:04:27 +08:00
啊,我不记得什么是冒泡排序、快速排序了……
|
74
mengzhuo 2014-08-14 21:05:48 +08:00
立马找插值排序wiki来压压惊
|
75
semicircle21 2014-08-14 21:07:13 +08:00
对象是没项目经验的学生才考基础.
有项目经验的, 让对方说说, 再问问"实现 XXX 的时候遇到过什么困难没有啊?" 之类的, 套套话,就知道面试对象几斤几两了. 要是考察动手能力, 不用冒泡排序这么复杂, 坐在电脑前, 写个单向链表的转置就够了. 这样的程序员应对日常的增删查改足够了. |
76
nooper 2014-08-14 21:09:31 +08:00 via iPhone
我不会。但是未必我写不出来
|
77
wdlth 2014-08-14 21:17:38 +08:00
我们以前数据结构老师闲的蛋疼就拿这种问题来考人……
|
78
frankzeng 2014-08-14 21:57:00 +08:00
正经的计算机专业肯定学过数据结构和算法,但又怎么样呢,几年用不到铁定忘记了。
|
79
ruandao 2014-08-14 22:06:02 +08:00
插入忘记了,但是还记得快排...
|
81
star001007 2014-08-14 22:47:47 +08:00 via Android
不懂路过。算法没研究心得!
|
82
so898 2014-08-14 23:20:37 +08:00
第一反应是冒泡,第二反应是快排,看到打牌那里才想起来是怎么排序的,艹……
|
83
davidli 2014-08-14 23:24:29 +08:00
虽然工作中一般用到排序的时候大多直接 sort(), sorted(), 但作为求职者, 明知道面试官喜欢问算法题, 这种基础中的简单问题都不会也绝对说不过去. 真要对这次面试还有一点点在意, 至少也把大学(或高职)算法课的讲义翻出来看两眼吧.
而在楼主详细描述了一遍的情况下, 还是写不出来这种最基本的程序, 这种编程能力还能干什么? 楼上诸位说自己不会这个排序, 不会那个排序的, 真是拿无知当优越. 我不会插排, 不会归并, 不会快排, 连冒泡也不会, 但我知道我是个好程序员. |
84
ichigo 2014-08-14 23:30:54 +08:00
这是基础吧,当年上大学的时候,数据结构,把7种排序玩了个遍……
|
85
timothyqiu 2014-08-14 23:32:13 +08:00 2
看了一大半,我感觉自己是站在楼主这边的。然而看到最后「呵呵」两个字,反而立马就想帮应聘者讲话了。
|
86
harryert 2014-08-14 23:46:34 +08:00
忘得一干二净的飘过。。。。
排序也好,链表也好,二叉树也好,统统忘记鸟。。。。 那我说我是干啥的那,码农,it搬运工抑或IT行业的其他相关人员。。。。 |
87
KentY 2014-08-15 00:34:01 +08:00
插入排序(Insertion sort)还是有用的, 它自己一般没人用, 但是Merge Sort(合并排序?)的时候, 当分的部分已经足够少, 可以不再继续分, 而用插入排序in-place排. 会比递归到底效率高.
3年前没事的时候实现过一个: https://github.com/sk1418/jalgorithm/blob/master/src/main/java/com/kent/algorithm/sorting/OptimizedMergeSort.java |
88
spacewander 2014-08-15 00:48:12 +08:00
考这些太过基础的算法其实就是考死记硬背而已……
毕竟除了大一大二或预先准备的人,不会有人记住的。 好的问题应该是,允许使用任意语言的标准库,比如sort,find等等,实现一个A*算法(或者标准库里没有的其他算法) |
89
spacewander 2014-08-15 00:50:26 +08:00
顺便水一下,当年试过对着《算法导论》把快排敲一遍,结果这个版本的快排比标准库的sort慢了一个数量级……这才知道世界上真的有黑魔法的存在……
|
90
KentY 2014-08-15 01:37:31 +08:00 via Android
我觉得吧,招程序员问算法一点都不过。 但没必要因为人家不会就笑话人家。
就好象,数学家都会求最大公约数,但笑话别人不会求大公约的,一定不是高水平数学家。 |
91
icyalala 2014-08-15 02:31:28 +08:00
一线城市,上市互联网公司:
每到校招季节/跳槽季节,我们部门的面试官们都翻书上网复习算法找各种算法题来做,生怕Hold不住应聘者。。 应聘者们也拼命复习算法数据结构,扔掉早已习惯的IDE拿出纸来练习手写代码,生怕被面试官KO掉。。 等两年后,应聘者变成了面试官,再一次重复了这个故事。。。 每到这种时候,我都想说:有意思吗!有意思吗?有意思吗?! 面试一上来问个学院派的XX算法,面试者很快刷刷写出正确答案,除了能证明事先准备过,还能看出什么? 有人就是不习惯在纸上写代码,遇到这种题再一紧张搞不定于是顾左右而言他,这样就说他没资格面试程序员了? 同事和同学也不少在BAT的,大家都知根知底,有几个人还在天天搞这些算法题? ==================== PS: 当年校招腾讯二面的时候,一上来出了道算法题,面试官很看不起我的样子背对着我玩电脑;题不难但搞的我很紧张几分钟没搞定,然后被直接撵走了,挺受打击的。。过了很久,问到腾讯的同学说那是压力面,面试官后来也说接触过,人不错,只不过压力面他把控不好。 但到底我还是对面试时手写算法有点心理阴影,以至于看到楼主这种面试过程就有些激动。我很认可算法的重要性,但是很反对楼主这种一上来就抱着笔纸让写那些无聊学院派算法的面试,忽略了对应聘者全面了解的机会。 最近我刚换完了工作,期间大小公司也面试了几个也都还算顺利,准备了算法但基本没用到。这些面试更多注重项目经验、架构设计、管理能力、学习能力、解决问题的能力。如果楼主要想深入了解一个人的算法能力,不妨给台笔记本,出个工作中的实际有用的算法问题来看他的解决问题的过程与思路。 关于面试与算法的讨论: http://www.zhihu.com/question/23105514 http://coolshell.cn/articles/8138.html 相信每个人都能从讨论里找到支持自己论点的证据。。 |
92
levn 2014-08-15 08:21:49 +08:00
再不学算法就老了
|
93
zzNucker 2014-08-15 08:43:58 +08:00
跪下来,这种排序都答不出来的居然还有人出来洗白。
|
94
lliioogg 2014-08-15 08:44:55 +08:00
我艹我居然也不会
|
96
missdeer 2014-08-15 09:13:53 +08:00
我想说我翻过算法书好几遍(至少排序算法部分),但现在仍然忘了。
|
97
sgissb1 2014-08-15 09:22:05 +08:00
如果工作经验不多的,让他写代码倒是不错。
如果有一定经验的,就别写代码了。只要能够把什么是插入排序讲清楚就行了。因为写代码会涉及到面试时紧张与否等问题。 不过挺好奇卤煮招什么条件的人,和面试了什么条件的。 |
98
pljhonglu 2014-08-15 09:32:35 +08:00
排序算法大学里学过也写过,但是工作从来就没用过。。。我觉得面试还是针对项目来讨论比较靠谱。如果是毕业生的话问问算法数据结构还可以。
|
99
codingpp 2014-08-15 09:39:37 +08:00
排序算法在工作里还真用过
因为不仅仅是排序,还要在排序的过程中干其他的事情 当时用的快排 |
100
bombless 2014-08-15 09:43:28 +08:00
平时用冒泡,背过快排,其他的都不会ww
不知道po主是怎么介绍插入的。 |