面试手写快排是一个方法,可以刷掉一些人

2019-03-10 06:20:21 +08:00
 Cbdy

听说字节跳动面试手写快排,我感觉虽然有点难,却不失为一个好方法。

我发现一些场景(比如面大厂),面试已经不一定是考察候选人能不能干活了,而是筛选出可能最能干活的一批人。

23580 次点击
所在节点    程序员
135 条回复
wengjin456123
2019-03-10 15:08:59 +08:00
我写 js 有一次写到过…那次实在是没事干优化逻辑,其实没啥感觉
ik2h
2019-03-10 15:11:07 +08:00
如果面试的是俄罗斯人,出这种题目的人估计会被当成弱智。
Ginray
2019-03-10 15:21:08 +08:00
其实这种东西真的很头疼,我本科的时候打比赛的,现在研究生找工作还要去看下实现的细节,毕竟平时基本不会用……
kkj678
2019-03-10 15:40:33 +08:00
@carlclone 不是这意思,但多数面试,背一下回答出来,很多面试官就不会深究了
v2exe2v
2019-03-10 15:44:06 +08:00
理解了就应该不需要“背”吧。
考的是算法基础,我觉得不算过分。
kljsandjb
2019-03-10 16:11:02 +08:00
马上要去面苏州微软,,题都没刷几道的瑟瑟发抖,都不想去浪费时间做一个不可能的事情了,哎
KgM4gLtF0shViDH3
2019-03-10 16:34:15 +08:00
@kljsandjb #63 能通过简历筛选也很厉害啦
lynskylate
2019-03-10 16:49:01 +08:00
...头条题目不可能直接考快排,内部对于面试算法题要求的 wiki 还是张一鸣当年写的,具体算法题目考察哪几个方面是有要求的。
qwlhappy
2019-03-10 16:51:19 +08:00
哈哈,是的,感觉在面试里面考分治法效率很高...
不过固定地考察快排有点不合适,可以找一些适合二分的问题然后要求实现有比非分治法更低的时间复杂度
并且手写嘛...一些细枝末节的问题就可以忽略了
cyspy
2019-03-10 17:28:18 +08:00
不可能要求手写能跑,伪代码都写不出来就有问题了
mnzlichunyu
2019-03-10 17:44:02 +08:00
以前也觉得一个快排考起来有啥难的。后来看了算法 4 关于快排的讨论,在快排基础上针对具体场景提出了几种优化的方法,才明白会写快排不算算法能力,那之后的讨论才是算法能力。
whahuzhihao
2019-03-10 17:47:20 +08:00
头条不会直接考快排。一般都是 leetcode 中等难度的原题。链表树搜索动态规划考的比较多。
上周刚刚二面挂了,二面没问算法,问了项目经验和实际问题。没什么拿得出手的项目估计因为这点挂了吧。另外我猜他们是按照资历定职级的,工作时间久了必须得达到资深的等级。
Reficul
2019-03-10 17:57:06 +08:00
不考虑效率优化的递归快排还是很好写的,算上优化就很容易写错了
kljsandjb
2019-03-10 18:15:31 +08:00
@bestkayle #67 哈哈 thx,hr 小姐姐跟我说先给我两周时间让我刷题,刷 100 道至少😂,已经过去一周了,就看了下剑指 offer 上的题解,随缘 2333
Taojun0714
2019-03-10 18:22:27 +08:00
@pwrliang 你再好好看看
iEverX
2019-03-10 18:26:04 +08:00
@fondoger

while (i < j) {
while (i < j && nums[j] > pivot) j--;
nums[i] = nums[j];
while (i < j && nums[i] < pivot) i++;
nums[j] = nums[i];
}

这个循环里,如果 num[i]...nums[j]都是一样的值,这里是死循环了
msg7086
2019-03-10 18:26:25 +08:00
考背算法和考算法完全是两回事。不知道为什么总有人要混为一谈。

考背算法,比如让你当场写一个快排,当场写一个树翻转,当场写一个 KMP,就是典型的把平时经常做开发写项目的人筛掉,只留下天天刷题的、背代码的人的做法。你企业喜欢考那是企业的自由,好坏我不多评判。

考算法才是我最喜欢的面试题。给你一个实际问题,让你去分析,思考,建模,然后想出一个算法来,最后实现它,这是每个软件工程师每天都要面对的事情。你甚至不需要把算法的代码写完,有时候说出思路画出流程图就能说明一切了。

要说谷歌,我之前也尝试过谷歌的面试题。https://leetcode.com/problems/trapping-rain-water 原题,让你当场去分析思考,然后从 Brute force 开始写,再逐渐优化到最优,从整个过程去考察程序员的能力。

亚马逊的考题更简单,https://leetcode.com/problems/count-and-say 的变种,比快排不知道简单到哪里去了。但是这是“背”不出来的,都是“想”出来的。
joouis
2019-03-10 18:36:21 +08:00
@kljsandjb 裸面进的苏州微软。一直觉得刷算法题是种误解
kljsandjb
2019-03-10 18:45:32 +08:00
@joouis 大神大神 比不了比不了😂
Taojun0714
2019-03-10 18:49:02 +08:00
@iEverX 循环里没错,循环外答主把 nums[j]=pivot 写成 nums[i] = pivot 了我也看混了。这是快排非写 partition 函数的标准写法

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

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

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

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

© 2021 V2EX