java 后端。一直在小公司转。最近面了几家大公司都挂了。
就拿 redis 来说吧。
问 redis 的持久化方式,这个我答 aof 和 rdb。再问 aof 和 rdb 的区别,这个答 aof 备份操作命令,rdb 备份具体数据。然后继续问 aof 文件太大会怎么样?我却不知道 aof 重写机制压缩文件。
问 redis 的主从?答读写分离,主机写,从机读。然后问主从同步,支支吾吾答了个 bgsave 命令,讲不清楚。
问 redis 的回收策略。答了 lru 和 ttl。然后让手写 lru 算法,写不出来。。
问 redis 怎么做分布式锁,答 setnx 命令。再问怎么释放锁,答 del key。然后问,如果获取锁的模块宕机了怎么办?答设置缓存失效时间。然后继续深问,分布式锁 redis 做了主从,如果设置锁之后,主机在传输到从机的时候挂掉了,从机还没有加锁信息,如何处理?这个我就蒙了。
面试官说我只会用,不懂底层原理。
一个知识点,不断地往深问,就会蒙。
现在面试大公司,面得怀疑人生,想进大公司实在是太难了。。
![]() | 1 402124773 2019-01-21 11:11:56 +08:00 ![]() 你多去几次,发现他们每次问的问题都是那些。然后针对那些问题,深入地查看源码,了解底层。然后。。。 |
2 zzzhbooo 2019-01-21 11:11:57 +08:00 ![]() 欲戴王冠,必承其重 |
![]() | 3 Itoktsnhc 2019-01-21 11:12:33 +08:00 ![]() 然后进去 CRUD |
4 RoyL 2019-01-21 11:12:49 +08:00 ![]() ...然后进去了发现,一个也用不上 |
5 yu5121199 2019-01-21 11:12:58 +08:00 1 楼正解,多去面几次就好了。 |
![]() | 7 jinhan13789991 2019-01-21 11:15:03 +08:00 ![]() 招一个螺丝钉,却问你发动机如何制造。 不过这也是人家筛选人才的手段啊 |
![]() | 8 skypyb 2019-01-21 11:15:50 +08:00 所以这个锁到底怎么处理啊,我也好奇 |
![]() | 9 SyncWorld 2019-01-21 11:16:09 +08:00 ![]() 面试造核弹,上班拧螺丝~~~ |
![]() | 10 F281M6Dh8DXpD1g2 2019-01-21 11:16:38 +08:00 ![]() "问 redis 怎么做分布式锁,答 setnx 命令。" 这个是有问题的,setnx & expire 这个操作并不是原子的 另外还有一些关于 redis 的分布式锁是不是安全的讨论,这个 blog 讲的不错 http://zhangtielei.com/posts/blog-redlock-reasoning.html |
![]() | 11 4DAX07B8Kle4Dm6T 2019-01-21 11:17:43 +08:00 @Itoktsnhc 真相 |
![]() | 12 guanhui07 2019-01-21 11:18:33 +08:00 多面面才知道自己不足,然后补,面试也是收获的一种 |
![]() | 13 nekoleamo 2019-01-21 11:18:41 +08:00 我之前去海康威视面前端,问的问题真的是大而全,上来就让我说一下 vue,然后我说到哪一点,就会盯着这个点挖下去,被问倒了 |
![]() | 14 suhongbo 2019-01-21 11:18:51 +08:00 你只是没有找个合适你的公司而已,不要急,慢慢来。面试也是一种经历 |
15 df4VW 2019-01-21 11:18:57 +08:00 不是啊,这公司只问 redis 么。。 |
![]() | 16 eamon666 2019-01-21 11:19:59 +08:00 你是在简历里过度强调了 redis 的技能吗?导致面试官一直揪着这些不放? 现在大公司 模块都是分的很清楚 普通的业务 rd 是基本碰不到 redis 底层原理的。。。 |
![]() | 17 F281M6Dh8DXpD1g2 2019-01-21 11:20:03 +08:00 另外你面试 java 职位让你当场实现一个分布式锁太欺负人了, 面试官自己都不一定能想出来一个正确的方案 |
![]() | 18 a226679594 2019-01-21 11:20:56 +08:00 面试造核弹,上班拧螺丝~~~ |
19 zhengwenk 2019-01-21 11:27:14 +08:00 ![]() @liprais 很多时候面试官自己不懂,所以希望在面试的时候问问看有没有人能教他。当然大牛面试官例外,但是大牛也比较少 |
![]() | 21 inwl 2019-01-21 11:29:36 +08:00 以前每次去面试自信都被击碎一地,因为我也不知道底层,只会用。 |
![]() | 22 maichael 2019-01-21 11:31:12 +08:00 我觉得这样问的问题不大,一般是你简历上写什么他就抓住一点问什么。然后再根据你回答的深入问下去,有些问题回答不出来不会减分,但是如果你回答出来就会加分,这对于筛选很有帮助。 |
23 maemual 2019-01-21 11:31:19 +08:00 只不过想要摸清你的深度而已 |
![]() | 24 msg7086 2019-01-21 11:33:01 +08:00 面造入拧是常态。不过盯着 Redis 问有点过分了。又不是招你去开发 Redis 的。 |
25 Jonssen 2019-01-21 11:35:19 +08:00 via Android ![]() 给你们支个招,在发现面试官苗头不对的时候,你先问一下面试官该职位的薪资多少?如果是 50K 的你直接走人,如果是 10K 的估计他也明白你的意思了。 |
![]() | 26 deepreader 2019-01-21 11:36:03 +08:00 @Itoktsnhc 说出了真相。 |
27 javaWeber OP @df4VW 不是啊,这公司只问 redis 么。。 ======================================== 不止啊。java 基础,集合源码,线程池源码,多线程并发源码问得最多。有些会问 jvm。 数据库基本必问索引和锁,还有 sql 调优。。以前我都不知道做后端对数据库要求这么高的。 框架就 ssm,springBoot 这些。 分布式的话就问缓存,消息队列,服务协调这些。 有的还会问几个 Linux 命令。 |
28 pxlxh 2019-01-21 11:39:09 +08:00 你不是应该感谢别人。 |
29 sarlanori 2019-01-21 11:40:29 +08:00 ![]() 这个只能说明供大于求了,一堆人去面相同的岗位,都满足该岗位的最低要求,那当然要在这里面选能力最强的了 |
![]() | 30 zhangdawei 2019-01-21 11:43:27 +08:00 via iPhone 很好啊,这个正好是补足不全的机会 |
![]() | 31 dengtongcai 2019-01-21 11:46:44 +08:00 l 楼主可以尝试总结一下面试经验,有好处的哦,我们也可以参考下 |
![]() | 32 RockShake 2019-01-21 11:47:50 +08:00 然后发现问的问题一个都用不上 |
34 waytodelay 2019-01-21 11:52:23 +08:00 via Android 楼主几年经验?面的哪家?想参考参考 |
![]() | 35 fcoolish 2019-01-21 11:54:19 +08:00 问的这么详细的吗, |
36 zjl03505 2019-01-21 11:55:36 +08:00 没人说 面试是一定要全答上。摸摸你的深浅,了解了解你应对问题的策略而已 |
37 loveCoding 2019-01-21 11:56:33 +08:00 你反问他 , 他也会跪的 |
38 nicevar 2019-01-21 12:03:52 +08:00 ![]() 招人就是这样,肯定择优录取,面试的问题不一定要求你全部回答上,那些调侃"面试造核弹,上班拧螺丝"的人等招进来给你打下手不行了你肯定会喷这人谁招进来的,这也不会那也不会 |
![]() | 39 mortonnex 2019-01-21 12:05:00 +08:00 redlock 没听过嘛... |
![]() | 40 nl101531 2019-01-21 12:07:01 +08:00 via Android ![]() redis 设计与实现 可以看看这本书 |
41 javaWeber OP @mortonnex redlock 没听过嘛... ========================================================= 听过。有个框架 redisson 里面有 redLock 机制。我只知道 lock(),unLock()。。不知道原理。 |
![]() | 42 he583899772 2019-01-21 12:21:52 +08:00 反复准备,坚持一两个月肯定没问题的 |
![]() | 43 enenaaa 2019-01-21 12:22:49 +08:00 面试就这样啊。 面试官就是把尺子,量出你的深浅。当然人家也不一定全懂,但是就想知道你懂不懂。 |
![]() | 45 onlin 2019-01-21 12:34:18 +08:00 via Android 攒经验,为什么会支支吾吾的,不会就是不会,会就是会,我面试时候问了我快两个小时,,,然后跟你讲,我走的时候不报任何希望,过了没几天就给了我二面~ |
![]() | 46 tourist2018 2019-01-21 12:48:00 +08:00 简历里面绝对写了 redis。。。 |
48 mogami95 2019-01-21 12:59:47 +08:00 没问你工作方向上的顶会 paper 就算幸运啦~ |
49 hilbertz 2019-01-21 13:01:51 +08:00 因为其他大公司也是这么面试,人家一个小小面试官,当然不想担责任,就按规章走呗 |
50 quwabcxyz 2019-01-21 13:10:22 +08:00 via Android 不要问人生理想这些尴尬呃呃问题就好,一堆鸡汤 |
![]() | 51 cncoffer 2019-01-21 13:12:41 +08:00 @nekoleamo 前年我也去海康面过, C 语言的嵌入式岗位, 感觉问题都很浅哎, 就是工资开的也很低而且 996, 然后我就没去, 2333 |
52 Paual 2019-01-21 13:24:04 +08:00 面试也是一次学习的机会吧,楼上说的 redis 设计与实现可以看一下,看过一遍,懵懵懂懂,感觉需要再仔细看一遍,换个思路想一下,遇到难的问题的时候都要从底层了解原理去学习,所以所有知识的学习都是由会用到了解然后到深入吧,分析然后类比总结,redis 用比较简单,用好又是一门学问了 |
![]() | 53 Vegetable 2019-01-21 13:26:34 +08:00 这就是为什么说不是真精通就连了解都不要说... |
54 jakson 2019-01-21 13:35:33 +08:00 确实,之前面过几个也是,一步一步的深入,而且有时候有的面试官问的问题很难理解。 知识点那么多,没个大半年准备怕是不行 |
![]() | 55 Just1n 2019-01-21 13:40:47 +08:00 所有大公司都这么面嘛? |
56 dezhou9 2019-01-21 13:45:19 +08:00 via Android 多看书就能秒杀了 |
57 pony279 2019-01-21 13:46:54 +08:00 不知道你具体是什么情况, 作为面试官, 主要考虑的应该是你个人技术和简历描述的匹配程度(是否真实靠谱, 很多公司鼓励内推, 也是基于这个考虑), 以及你有没有其他亮点 如果面试的时候过程中你只提到会用 redis, 那么并不能算作是亮点 你如果不擅长 redis, 那就把面试引导到你擅长的地方, 当学历,资历都没有优势的时候, 让对方知道你的长处, 才是上策 你可以回答, redis 我主要是会用, 并没有深入了解, 我平时研究 xxx 比较多 ... |
58 pony279 2019-01-21 13:51:34 +08:00 还有就是要体现出你工作或者研究过程中面临的挑战, 以及解决业务问题的办法, 比如前面提到的主从问题, 就是业务可能面临的挑战, 如果没接触过也很正常, 但是你可以找其他地方和他聊 |
59 ResidualWind 2019-01-21 13:52:32 +08:00 面试造核弹,上班拧螺丝~~~ |
![]() | 60 ntop 2019-01-21 13:52:52 +08:00 ![]() 老铁你这是不会面试呀,简历上写的东西一定要搞熟,面试不会只问问经验的没有区分度. 我以前面 Android 的时候就把会的东西从底层到源码全看一遍,来不及自己看的就到网上看看别人写的概要. 面 Java 的时候我就会把 JVM 内存管理\线程调度啥的都搞一遍,面 Go 的时候我还是照样把 GC 算法,内存申请等等看一遍,我用的任何算法我都会研究一遍,常用的算法比如你说的 LRU 必须手写,另外 Redis 源码不是很多的,一般公司都会期望你是读过源码的. 做到这些在经验层面几乎不会有问题,然后就是算法了,比较硬核和临场发挥的关系也很大自认一上白板就紧张... |
![]() | 61 CasualYours 2019-01-21 14:03:15 +08:00 这些都是常见的面试题,你要是用过 redis,这些也都是要清楚的。多看看面试攻略,提前作作准备。 |
![]() | 62 20015jjw 2019-01-21 14:04:53 +08:00 via Android 这些题目有意义么... |
63 GoodRainChen 2019-01-21 14:14:34 +08:00 我觉得很常见啊,不都是抓一个点问下去,看看你对原理的掌握。有些可能就是公司要自己造轮子的,或者公开的轮子有 bug,得去修复或者定位问题。 世界上哪有不出错的程序,假设一个可能损失几百万的 BUG,难道你判断“这是 Redis 的问题”,或者“ XX 轮子就是这么干的”,你以为就可以不用改了? 我面试小公司来的同事,就感觉这帮人喜欢不求甚解,问个东西,就只知道用,原理也不想,如何改进也不想,拧螺丝也有可能拧出问题啊,总不能就放着不管吧? |
64 cyhulk 2019-01-21 14:15:10 +08:00 这些东西都在 redis 官方文档上,也应该撸一遍的 |
![]() | 65 NicholasYX 2019-01-21 14:18:41 +08:00 面试造火箭,入职拧螺丝 |
66 Asice 2019-01-21 14:21:15 +08:00 工资给够管他造核弹还是拧螺丝 |
![]() | 67 BBCCBB 2019-01-21 14:22:52 +08:00 我也想知道主从同步不及时,挂掉的情况下分布式锁怎么处理, 除了 redblock 这个 |
![]() | 68 hahasong 2019-01-21 14:24:18 +08:00 就是官方手册上的,没意义。能谷歌查到的常识文档,问来干嘛 |
![]() | 69 puritania 2019-01-21 14:25:14 +08:00 分布式锁 redis 做了主从,如果设置锁之后,主机在传输到从机的时候挂掉了,从机还没有加锁信息,如何处理? 这个确实不知道怎么处理。。。 |
70 ala2008 2019-01-21 14:34:28 +08:00 看来我要好好准备了 |
![]() | 71 sununiq 2019-01-21 14:37:02 +08:00 via Android 主从那个无解吧,redis 本身保证的是 ap,要求一致性只能上 zk |
72 lalala121 2019-01-21 14:40:25 +08:00 ![]() 我几年前去猫眼面试,一个年轻人面我,上来就问 redis,我感觉他是刚看完《 redis 设计与实现》,基本就是按照目录来问的,问了将近半个小时,然后让我回家等消息,只问 redis,我是 phper |
73 skysword 2019-01-21 14:48:06 +08:00 via Android 很正常,无论什么领域,针对每一次回答,不断深入问下去,一般不超过六次就能把人问住,无论被问的人有多牛,屡试不爽,因为一般几次之后就会深入到非常理论的领域,绝大部分是未知的领域 |
![]() | 74 arthas2234 2019-01-21 14:48:29 +08:00 写简历也是门学问啊,不要就写一份简历然后海投 一般都是先筛选公司,然后根据每个公司的招聘要求,写出不同的简历 约到面试以后针对性的复习,写太多了真的容易出错 个人精力真的很有限,你实际开发中使用到的技术那么多,不可能面面俱到的 |
![]() | 75 tlriavsihd 2019-01-21 14:51:33 +08:00 猜测你面的头条吧…其余的面试题能分享一下吗… |
76 sgissb1 2019-01-21 14:54:38 +08:00 别太当真,你拿出工程经验来,随便问他们两个有点价值的问题一样可以反杀。 |
77 ducklyl 2019-01-21 14:56:30 +08:00 面试造火箭,入职拧镙丝。现在不都这样吗?好像你知道这些高大上的东西,逼格就不够。 |
78 openbsd 2019-01-21 15:09:35 +08:00 这不是运维的活 ? |
79 9684xtpa 2019-01-21 15:13:21 +08:00 ![]() @javaWeber #41 所以你应该把 redlock 的原理了解清楚,你就能完美回答分布式锁了,本身的 SETNX 需要基础 LUA 脚本实现原子性,但是如果涉及到集群的情况下,这种方式不是完美的,里面会有很多的问题,所以问及到 redis 集群情况下,分布式锁,就得谈到 redlock,俩者都了解清楚了,你就能回答清楚了 送你两篇文章 https://mp.weixin.qq.com/s/JTsJCDuasgIJ0j95K8Ay8w https://mp.weixin.qq.com/s/4CUe7OpM6y1kQRK8TOC_qQ |
![]() | 80 geekyoung 2019-01-21 15:17:06 +08:00 就当多了一次学习和了解的机会了 加油楼主 别灰心! |
![]() | 82 lincanbin 2019-01-21 15:22:17 +08:00 进去后说不定会发现代码就是屎山。 |
83 9684xtpa 2019-01-21 15:22:39 +08:00 @RoyL #4 你错了,正常的业务开发可能会用不上,但是会的越多,处理复杂问题以及解决问题的能力越强,而不是一个很普通的会写一些简单代码的人能替代的,比如一些中间件的性能甚至 BUG,你让一个小白去解决,还是让一个了解其中原理的人去解决。另外很多东西现在网上都有相关的文章,甚至很多的技术书籍都有提到,这也是体现一个人学习能力的表现。 其实面试的时候,除了体现你的业务解决能力,很多时候是想看到你能给这个团队带来多少东西,是否可以独立负责技术项目,是否可以应对复杂需求,不是招个人进来都是写内部的管理后台的。 |
![]() | 84 ZeoKarl 2019-01-21 15:24:28 +08:00 via iPhone 面试造核弹,入职搞核弹发射按钮 手动狗头 |
![]() | 85 tabris17 2019-01-21 15:30:49 +08:00 |
![]() | 86 frantic 2019-01-21 15:31:49 +08:00 上次面试 以前在阿里 p10 的大佬最终面,问了我好多关于数据结构的问题,包括画出各个链表结构,我都不会,但聊的很开心,结果给了我一些职业上的建议,当晚就发 offer 了 |
![]() | 87 passerbytiny 2019-01-21 15:55:00 +08:00 被抓壮丁去面试人几次后,算是有点面试官的经验。可以给楼主解答一下,不一定对。 技术把关的重点是这三个:实际工作经验年限或者简历可信度、擅长点、学习或总结能力。面试技巧是这样的:多问,问到底。回答了多少、回答对了多少,回答到什么层次,都不是重点,重点就是验出前面说的那三个。 你不表达“我不会”,那就会一直往底上问,这一点看不出来啥问题。“面试官说我只会用,不懂底层原理。”具体看面试官怎么说的。如果是这样你会用,不过底层原理还不太懂,那么只是一个一般事实陈述,在最终评价中最多是不优秀,基本不影响过关。如果是这样你这啥都回,就是底层原理一点都不懂,那么这是再变相得说你不懂装懂,基本属于婉拒了。是前者还是后者,需要楼主自己体会,光凭你现在的描述,猜不准。 |
![]() | 88 shellbye 2019-01-21 15:55:48 +08:00 瑟瑟发抖 |
89 ldh756034624 2019-01-21 16:17:09 +08:00 然后进去 curd........ |
![]() | 90 poplar50 2019-01-21 16:20:07 +08:00 via Android 今年秋招 手写了好几次 lru |
93 lolizeppelin 2019-01-21 16:47:25 +08:00 ![]() 分布式 一定有 1 仲裁能力 2 >=3 的参与仲裁成员 3 快速的同步 4 仲裁投票 5、6、7....等等等等 讲到底还是要懂 Paxos 那套原理 一 redis 搞分布式锁,意思意思就行了..... |
94 yuankui 2019-01-21 17:02:33 +08:00 ![]() 我觉得现在的面试题,都问的是:茴香豆有几种写法,而没有人关心茴香豆做法。 道理说的一套一套的,实际干起来,就啥都不会 |
![]() | 95 matrix1010 2019-01-21 17:09:49 +08:00 via Android @poplar50 现在要求越来越高了, lru 在 leetcode 可是 hard, 不过要求 O(1) |
![]() | 96 loser 2019-01-21 17:10:22 +08:00 去年初创业失败重新出去找工作面试运维,结果问了很多我都答不上的问题,毕竟我也脱离运维有一两年,最后确实也没过,然后想了几天再次拉上朋友重新创业,这回不干技术干运营,目前公司已经实现持续盈利,有时候真的可能转个弯换条路也行。 |
![]() | 97 ikaros 2019-01-21 17:27:53 +08:00 为啥揪着 redis 问,而且如果不是专职 redis 运维谁会把 redis 搞得那么熟啊 |
![]() | 98 poplar50 2019-01-21 17:31:01 +08:00 via Android |
![]() | 99 poplar50 2019-01-21 17:32:13 +08:00 via Android @matrix1010 头条尤其喜欢这个 还有滴滴也问到了 |
![]() | 100 atonku 2019-01-21 17:34:22 +08:00 面试造火箭,入职拧螺丝 |