你们面试前或平常会刷面试题吗

2020-02-29 08:29:00 +08:00
 jdz
感觉不刷面试题好吃亏啊
7090 次点击
所在节点    程序员
39 条回复
alphatoad
2020-02-29 11:25:41 +08:00
字节跳动的题还是有意思的,没 Google 那么恶心( 60 分钟三道 bugfree 真的没时间),也没 IBM 那么没水平( 180 分钟三道 lc easy 难度,没劲)
PanJiaChen
2020-02-29 11:31:04 +08:00
面试前不刷题,这不是对面试官的不尊重么。。。。
裸造航母还是挺难的。
zzzzzzggggggg
2020-02-29 11:59:09 +08:00
打篮球正式上场前两天不也需要打个热身赛么?上场前还得做好热身,不然容易崴脚
glumess
2020-02-29 13:56:41 +08:00
当然刷啦,除了准备项目经历,程序员必备的基础题目都还得准备一下。看面试题就好比高考前那以前做过的题目在复习看一看
GrayXu
2020-02-29 14:24:44 +08:00
\刷…权当抱佛脚
aguesuka
2020-02-29 14:25:31 +08:00
写过需要算法的项目后,发现刷算法题是一个性价比非常低的事情。
比如我需要一个数据结构,操作只有 3 种,就是增加,删除和无序遍历。刷算法题的经验告诉我这种东西最适合用双向链表做,增加时返回 node,删除时移除 node,遍历写个 for 循环就行。增加删除的复杂度是 O ( 1 ),遍历的复杂度是 O ( n ).可再我使用的实际场景种还不如一个数组,时间复杂度是 O ( n )的根据下标增加和删除,因为在我这个量级创建对象的时间更慢(论坛里曾有人说绝对不要使用 LinkedList 时,我曾经很不屑)。而实际上,有个《数据结构》里没有的数据结构可以用 Array 来完成 O(1),O(1)的按下标删除和增加。
最后我选择了用 HashSet,不是应为它最快,而是因为它不需要保存下标或者 node 等待删除时使用,避免让程序变得复杂。
tilv37
2020-02-29 15:11:57 +08:00
我的话肯定得刷题的。
先刷基础知识,JVM、数据结构、常规算法、设计模式、网络之类的。然后结合自己的项目吧这些点都套进去,尽量做到言之有物。
然后就是看投的岗位有啥需求了,再针对性的开口平时不怎么掌握和使用的,做到基本了解就行了
jellybool
2020-02-29 16:55:54 +08:00
@siriussilen 竟然看到信管专业的人!世界真小
20015jjw
2020-02-29 17:35:18 +08:00
@aguesuka
算法题目的只是为了面试考察而已 不是为了让你在实际 project 里用的 重点在于考察解题能力 沟通能力 和 写码能力
helloworld000
2020-02-29 20:43:14 +08:00
刷题这些东西就跟健身跑步一样,没事都可以搞一搞

@aguesuka
比如我需要一个数据结构,操作只有 3 种,就是增加,删除和无序遍历。刷算法题的经验告诉我这种东西最适合用双向链表做,增加时返回 node,删除时移除 node,遍历写个 for 循环就行。增加删除的复杂度是 O ( 1 ),遍历的复杂度是 O ( n ).


我觉得你肯定刷的不够好,因为你这个需求是个很典型的 LRU cache,需要 doubly-linked list + hashmap,就能实现 O(1) 的增加和删除还有搜索

```
可再我使用的实际场景种还不如一个数组,时间复杂度是 O ( n )的根据下标增加和删除,因为在我这个量级创建对象的时间更慢`
``

因为你的场景 scalablity 还不够大,如果大的话就是会有影响
onfuns
2020-02-29 21:03:33 +08:00
知识都是碎片化的,面试问题大部分都是理论,实际项目中基本不用或者用的不多,就是背的知识,不刷怎么过。
tinyhill
2020-02-29 21:15:05 +08:00
作为面试官的人告诉你,刷题,是很容易被面出来的。一般答题如背书的,都会谨慎考虑。刷题可以,内化是关键。
anonymousUser123
2020-02-29 21:27:56 +08:00
怎么楼上大部分都只说刷算法题,是太多人没有经历过现在的面试吗。。。。
现在面试除了算法题还会问其他这些啊 https://www.bilibili.com/video/av48988279
volatile 不保证原子性,指令重排
CAS 底层原理
原子引用
锁的底层
JVM 底层
等等
这些平常写业务很难接触到啊,
即使业余有学习,学完以后也容易忘啊
面试当然要前做个重点回顾啦。
windliang
2020-02-29 21:32:03 +08:00
现在每天也都刷刷 leetcode,顺序刷题目前到 239 了,每道题都记录了详细思路,分享一下
https://leetcode.wang/
kevincai100
2020-02-29 22:07:27 +08:00
现在面试真的像造火箭,挺难的
aguesuka
2020-02-29 23:13:41 +08:00
@helloworld000 leetcode 这么靠前的题。

不过你想复杂了。首先我不需要排序,其次我的接口可以这么写 T add(E elment); boolean remove(E element, T token);类似 js 的 setTimeout 和 clearTimeout 函数。还有个隐藏条件是一个 elenment 只会 add 一次,容器只会被遍历一次。

最快的方法是使用一个 Array 和一个 Stack,Array 在没有元素被删除的时候正常增加,有元素被删除的时候把被删除元素下标保存到 Stack 里面,如果 Stack 不为空,则增加时优先使用 Stack 里的下标。不过在使用时要考虑的比这个多,要不要实现 Collection 接口,token 保存在哪,遍历时要不要快速失败,如果要改成并发容器需要多大工作量。最关键的是不做基准测试很难知道到底那个实现快,比如你猜同样是 O(1),用链表快还是散列表快。

跑题了,我觉得刷算法题性价比的原因是要花很大精力去写很脏的代码,去实现不灵活的接口,当然学到的经验很宝贵,但是在写代码时只是最基本的素质,而在面试时,手写的代码面试官也不会看,说出原理就行了。
tt67wq
2020-03-01 09:29:20 +08:00
肯定得刷
haosamax
2020-03-03 17:19:36 +08:00
@jdz 我打内心恐惧算法。感觉没什么套路可言。请大佬指教!
jdz
2020-03-04 22:11:57 +08:00
@haosamax 熟读唐诗三百首,不会作诗也会偷

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

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

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

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

© 2021 V2EX