如题,当被问题对哪些技术有深入了解时,任何技术,任何领域,都可以,该怎么沟通?
貌似好多东西都理解,也知道原理,也能实现,但是深入不知道会是什么程度,每每问到的时候,不知道如何回答;
1
ihuotui 2017-04-19 11:09:57 +08:00 via iPhone
他问什么 你答什么就行了
|
2
bbao OP @ihuotui 当然是如果问到了指定技术,怎么理解,怎么用的,有什么优缺点,遇到什么坑当然是可以聊的;
但是,就只是问你,对什么技术或者领域有深入的了解,任何技术领域都可以;如果没有特定的深入了解过一些技术,以及深入了解源码的话,我不知道如何答这些; |
3
ihuotui 2017-04-19 11:42:48 +08:00 via iPhone
@bbao 如果不能吹牛逼,那么没有内涵。例如问并发你能说出什么?例如问 mysql 你又能说几分钟?这就是内涵。一个不会吹牛逼的程序员不是好厨师。
|
4
bbao OP 你问的这些还都挺简单的,只要给出一个指定的问题,都好答;
拿 mysql 来说, 了解索引实现机制,为什么使用 btree , b+tree 和 b-tree 的特点,如何合理创建索引,聚簇索引,耳机索引的区别(索引和数据是如何映射);联合索引有什么注意事项;数据量大如何处理; 对于单表大数据之后,如何处理,了解是否做过 表分区,分库,分表; mysql 的表分区的特点是什么;如何分库,如何分表;现在的分库规则是什么?分库之后如何针对数据做检索的,是自己后端逻辑处理还是使用开源的框架,这样就把问题扩展到另一个问题; btree 可以引申到数据结构的问题;例如平衡树,红黑树,红黑树是否适合存储海量数据,如果不适合,为什么。 如果做 java 的,可以简单的带一句, treemap 的实现机制,对于工作 4 年内的人,然后可以横向对比一下 hashmap 的实现原理,为什么支持并发,如果并发会产生什么问题;使用 hashmap 有什么注意事项.如果产生 hash 冲突之后,怎么处理的. 但是对于我问的问题,这种深度的问题的话;我个人理解,还是对,比如深入了解 redis ,要对 redis 的方方面面,原理,源码都有了解才叫深入;所以这种开放性范围提出之后,对于我这样理解这个问题时,就不知道如何答这个问题; |
7
GeekGao 2017-04-19 13:49:23 +08:00
反问面试官:这个话题好突兀,您能限定个具体范围吗?
|
8
czheo 2017-04-19 13:53:59 +08:00
真不会聊天,情商拙计。
|
9
woshixiaohao1982 2017-04-19 13:55:50 +08:00
@bbao
这个问题表面上看是问技术,我觉得更多是考察一个人 对技术的态度吧, 很多人做了很多年 java 对容器的特点一窍不通的也有,也有对技术了解的非常少的人, 例如 jvm gcroots 是基于有向图可达性分析来 归代回收,本质上来讲这就是个图论算法 图的算法 最经典就是 dfs bfs 某 D 开头几乎很难拼对名字的算法 拿楼主说的红黑树是否适合存储海量数据来讲, 除非业务对数据有十分强的有序性要求, 否则不推荐海量数据使用红黑树,因为红黑树的 插入 查找, 在并发的情况下 其吞吐量并不是很好,通常在有线程插入数据 加锁后,红黑树 需要 要锁定一个较大的分支 (具体的红黑树 插入 查找的操作 已经忘了,,不过我当时学习这个算法时候 分析过加锁的原因 ), 而这些操作正是维持容器内数据有序性的必要操作 维持高吞吐容器的话还是 hashmap 较好 因为通常只会锁住一个 头接链表的头部,如果有可能的话 还可以加入更加细粒度的锁, hashmap 在没有有序性要求的场景下,较 红黑树 优 |
10
woshixiaohao1982 2017-04-19 14:00:25 +08:00
另外数据底层原理 多线程容器竞争的问题 以及吞吐量的问题,
本质上就是 资源竞争 跟算法与数据结构 选择的问题 把基础性的书 读一遍,基本上能答个八九不离十 |
11
woshixiaohao1982 2017-04-19 14:04:25 +08:00
@bbao 另外我觉得你刚才说的这些东西,能跟面试官扯一扯 能把细化一部分的原理跟细节 就已经很不错了
这种开放性的问题,本身并不是考察 面试者有多牛逼,只是考察面试者 对待技术的态度,平常看书学习的态度 当一个面试官问 JVM 的时候,你能把深入理解 Java 虚拟机上的东西 加上自己的理解 复述一遍,另外能带上 Java6 subString 内存泄漏的分析 就已经相当不错了 |
12
woshixiaohao1982 2017-04-19 14:07:06 +08:00
http://hedengcheng.com/?p=771
这里有一篇 mysql 事务加锁机制的文章,,面试的时候 扯一扯 能扯明白的 有几个? |
13
bbao OP @woshixiaohao1982 红黑树是可以坐缓存的,但是量级不能特别特别的大,因为深度决定了检索效率; openresty 的 shared.dict 缓存,实现原理就是红黑树;
jvm gcroots 冷不丁不知道是啥,拆开看才明白;就一个对象合适才能 gc ,找不到 root 就 gc 嘛; hashmap 不适合高并发,也不能用在并发场景,并发场景使用 ConcurrentHashMap ,因为并发时, put 的时候,如果产生了 rehash 扩大 map 容量,那么就会有问题;貌似是 next 的指针指的不对,具体实现忘记了; 如果是吞吐量的话,是不是用 LinkedListBlockingQueue 来存放对象。 |
14
ihuotui 2017-04-19 14:09:35 +08:00 via iPhone
既然可以回答那么多,我也会再问还有其他深入了解的技术,例如 rocketmq , dubbo , netty , zookeeper ,有没有看过源码,如果说看过,我会问它们的设计,然后为什么这样设计,然后让你来实现怎么做。这几个都比较典型,里面的思想挺好。
|
15
ihuotui 2017-04-19 14:10:22 +08:00 via iPhone
@woshixiaohao1982 看过哈哈
|
16
bbao OP @ihuotui 没有共享状态,单个线程处理结果独立,不受其他线程状态影响的情况,数量级再单线程执行比较慢的时候用需多线程;
@GeekGao 他问的就是,你对你所熟悉的领域,任何一个你觉得,你了解的比较深入的技术,都可以聊;所以就看你自己的平时对技术的深度了解; 还有 @woshixiaohao1982 说的学习态度问题; 我学习态度不端正,面壁. |
17
bbao OP @woshixiaohao1982 锁的问题,我个人觉得,了解如何合理的创建数据表,以及创建索引的规则,知道现在不是一个 sql 只能执行一个索引,可以索引合并,符合索引(a,b,c) a,ab,abc 都可以走索引,也就可以不针对 a 进行单独设置索引;或者什么时候创建(a,b),什么时候单独的创建 a , b 索引;
像你刚发文章链接,如果清晰的知道 mysql 的事物机制的话,可以问一下 mvcc ,以及如何“可重复读”是如何避免幻读的(间隙锁); 这些,我觉得一个开发,了解到这,在深入的实现之类的,或者其他问题,我可能就不会了; |
18
bbao OP @ihuotui dubbox 仅限于使用; zookeeper 如果公司使用的多的话,能很好的了解;我之前阅读过 zookeeper 的原理和实现,刚看完特别清晰;但是,现在已经忘干净了,因为我们现在用 zk ,因为用 dubbo ,因为 dubbo 推荐使用 zk 。
我们的 activemq ,我觉得也是 demo 的基础上调整一下,做个主从; netty ,方便了解 nio ,之前也很透彻,现在也完蛋。 了解 netty 的时候,还可以了解到 select epoll 等一些问题;当时看的时候,针对这些顺着看的,可是现在,也没什么太多印象了; 上面那些,用到的也就是使用了;其他的没太多了解了,之前了解过的,也不怎么记得了 。 |
23
woshixiaohao1982 2017-04-19 14:37:41 +08:00
@bbao 你能聊到这么多就已经很不错了,我上次出了个题目,开放性的,,大致讲下 hashmap 的实现跟原理,
在并发的情况下,如何为 hashmap 加入细粒度的锁 使其可以并发访问,人家看完面试题 发现不能百度 转身就走了.. |
26
ihuotui 2017-04-19 14:51:31 +08:00
@bbao 吞吐量大的,我会选择无阻塞链表 ConcurrentLinkedQueue , LinkedListBlockingQueue 还是把线程阻塞了,无阻塞才是王道。编写吞吐量大的应用很考验能力,对性能的理解。
|
28
woshixiaohao1982 2017-04-19 15:01:21 +08:00
@bbao 技术上 其实明白技术底层性的原理,够用就好了,深抠每一个细节,于精力 于时间 都是难以达到的,我毕业快两年了,还不是科班毕业,转行过来 3 个月 ,面试过的水货程序员 太多太多了,有的连 找到数组中 第 n 大的数 都不会写
|
29
ihuotui 2017-04-19 15:07:34 +08:00
@woshixiaohao1982 他面试高级程序员,现在卡了,还是项目积累和深度。再参与多几个大型项目和架构设计,然后再魔改或者研究主流中间件。
|
32
woshixiaohao1982 2017-04-19 15:50:32 +08:00
|
33
bbao OP @woshixiaohao1982 我平时看书不多,最近一直关注 https ,可以看看 https 权威指南,黑色那本,针对加密算法、 openssl 性能测试以及 https 优化都有概括,而且比 http 权威指南看的容易,不那么枯燥,生涩;然后可以关注一下 http2 ;解决了 http1.1 的很多痛点;
|
34
ihuotui 2017-04-19 16:14:16 +08:00
@woshixiaohao1982 我建议环境重要,书是提升内功,环境是实践,遇到越多的人,越多事情,互相交流,边实践边成长。
|
35
Chrisplus 2017-04-19 16:25:46 +08:00
就特别讨厌乱问的面试官,就老老实实的写题得了,或者就简历中相关的,感兴趣的问一下,拿住一个点往深问,再慢慢扩展成一个面。
上来就问类似这种特别宽的问题,说浅了面试官不一定满意,说深了面试官又不一定懂,多尴尬…… |
36
woshixiaohao1982 2017-04-19 16:27:26 +08:00
@ihuotui #34 好的环境,可遇不可求,没有人脉 没有朋友内退 只能自己先修内功了,
|
37
bbao OP @woshixiaohao1982 哈哈,内推也需自身硬啊…内推不一定能进;不要浪费光阴,没事儿干,就趁早撤退,也不要看钱多如何如何;我就是前车之鉴
|
38
woshixiaohao1982 2017-04-19 16:32:47 +08:00
@bbao #37 我现在更惨..不说了..码畜级别
|
39
woshixiaohao1982 2017-04-19 16:37:09 +08:00
@bbao #37 谁要是能给我 推荐个靠谱点增删查改的后端工作 我就谢天谢地..
|
40
bbao OP @woshixiaohao1982 等我自身解决了 帮你推吧,哈哈。
|
41
woshixiaohao1982 2017-04-19 17:02:21 +08:00
@bbao #40 祝你早日解决问题,踏入高层环境 😄
|