高并发系统设计 40 问
唐扬
美图公司技术专家
49013 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
高并发系统设计 40 问
15
15
1.0x
00:00/00:00
登录|注册

06 | 面试现场第一期:当问到组件实现原理时,面试官是在刁难你吗?

展示自身优势
如何应对技术问题
虚拟 DOM
组件生命周期
展现解决问题能力
展示专业知识
检验技术深度
评估候选人能力
沟通解决方案
展示深入理解
了解候选人思维方式
考察基础知识
面试技巧
深入组件实现原理
候选人表现
面试官意图
候选人应对策略
面试官意图
后续文章
总结结果
组件实现原理
面试现场第一期

该思维导图由 AI 生成,仅供参考

确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《高并发系统设计 40 问》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(38)

  • 最新
  • 精选
  • 👽
    首先谈谈我对HashMap的理解。 首先,实现原理:基于数组和链表,JDK8以后也会在特定情况下转为红黑树。 以对象的Hash值确定数据所在下标,如果下标里已经有数据,则用链表存储。在链表超过8时转化为红黑树。 转红黑树的目的是:红黑树的查找时间复杂度是logn,而链表是n,红黑树保证了在同一个下标下数据元素过多时候的高性能。 为什么在8之后才转红黑树:因为转红黑树,以及维护红黑树的左旋右旋需要额外的性能开销。而在数据量较小的时候,优化时间复杂度意义不明显。(例如:二分查找在数据量小的时候,性能提升不大)自认为这一条回答也算是红黑树和链表的优劣势。 HashMap不是线程安全的,所以有ConcurrentHashMap。 ConcurrentHashMap的线程安全,是使用了加锁的方式。 1.8之后,对加锁的数据粒度更加细化。每次只锁一个node。所以1.8以后的ConcurrentHashMap在并发下性能大幅度提高。 关于redis的问题,说实话,我觉得跳表 和 红黑树,我觉得都是可以的。因为核心目的是高性能,这两个在查找的时候性能都不错。硬要说的话红黑树性能更高(看测评是更高,理论上讲实际差距不是特别大),但是同时也更耗费内存(因为跳表的内存消耗是可控的)。而现在2019年这个时间点,为了用户体验,更多的还是以空间换时间,所以,我个人认为,红黑树可能更合适。 然后是想请教的面试问题: 1,请问老师如何看待基础与技能广度的重要性对比?就是说,主流的分布式框架我掌握的并不全,但是我觉得我数据结构,算法,Java这些的基础比同期其他人都要好,我认为我可以很快掌握公司所需的技术。您会接受我这样的人嘛? 2,现在的公司,面试动不动就需要你有高并发经验。但是,没有高并发的经验就无法进入有高并发场景的公司。(一个先有鸡还是先有蛋的问题)关于这种现象,您怎么看?有没有什么建议?

    作者回复: 1. 其实我会看工作年限,如果您工作了五年之后,我觉得基础知识更重要,技能广度可以慢慢培养;如果工作了七八年了,还是需要有一些技术的视野的 2. 要多思考,多看出,了解高并发的基础知识,然后考虑如果自己的业务到了更高的量级要如何解决

    2019-10-14
    8
    36
  • 小喵喵
    好多面试官喜欢数据来说话,比如做高并发系统时,面试官问,你做的高并发系统TPS是多少,QPS又是多少,日活跃是多少?负载用什么来做?为什么要做负载,每一台机器的配置是如何?(核数?CPU?内存?硬盘等?)对于这些数据化问题,心里没有底,随便回答一个数据,面试官一下子就看出来了,知道你在忽悠,没有真正做过高并发系统。请老师举例一些量化(数据化)的面试问题,并且如何回答?

    作者回复: 这就要你在平时的时候多了解维护系统的数据了,数据对于性能优化很重要

    2019-09-30
    7
    25
  • 吃饭饭
    感觉自己有点笨了,老师举的案例我没有看明白是哪里的问题。问题是:存储用户认证信息的缓存命中率极低,只有 20% 发现,老师发现 slab class5 占用了 2G 内存中的 1.9G ,但是用户认证信息用的是 slab class6。既然单独的空间都是 2G ,class5 的占用跟 class6 有什么关系,class6 的空间很充足,为什么还是会自动剔除,难道这里自动过期吗,求解答?

    作者回复: 是说slab class 5 占用了绝大多数的空间,那么slab class 6最多只能分配到100M,可是我们的缓存的用户认证信息的数据量远大于100M,而认证信息的数据大小又大于class 5的大小,没法存储到slab class 5里面,所以就会产生剔除了

    2019-10-08
    6
    14
  • 邋遢的流浪剑客
    无论是为了面试还是个人成长,基础知识都很重要,其实开源组件会用是很简单的,真正涉及到开源组件的底层原理离不开数据结构、计算机网络、操作系统这些基础知识,这些知识可不是一朝一夕就能搞定的,现实情况是很多程序员往往忽略了这方面的学习

    作者回复: 是的,没错~

    2019-09-30
    2
    14
  • longslee
    老师咱还真遇见过“刁难”的哈哈,比如Java的那几个HashMap问题,我觉得我都答了,他还问我“你是不是背的啊?”(😫不知道是何用意)。 另,非常希望老师站在面试官的角度,对我这种只有传统项目经验,没有实际高并发实战但平时也略有学习(比如学习您的专栏😊)的人,提出怎样的问题;针对面试中要求的一个中间件,我确实没有用过,面试官优先觉得这人不行,还是能根据所答基础知识推导出以后学习这项技能没问题呢?

    作者回复: 如果是我的话,我会更关注基础知识,你可以没有用过,但是基本的原理要了解了~

    2019-10-04
    2
    7
  • 仙道
    咱们平时的工作大多数都是CRUD,如何在面试中介绍项目经验

    作者回复: 剧透一下,在面试现场的第二期会讲到哈~

    2019-10-02
    2
    7
  • 小喵喵
    请老师举几个案例分析一下,工程师和架构师是如何做自我介绍的?

    作者回复: 倒也不分工程师和架构师,只是在面试介绍项目经历的时候可以多突出你的贡献,比如你解决了什么问题,如何优化了性能,设计了那些方案,突出做的事情的难点,以及你的解决思路。我可以在后面面试现场里面讲讲这个:)

    2019-09-30
    2
    6
  • 次声波~~
    我最近刚开始当面试官,其实我觉得当面试官也很难...在有限的时间内真的很难看出来面试者是不是一个好的coder,能否高效写出逻辑清晰的代码。现在网上面试题那么多,多准备准备基本上java 和数据结构的题都能答得无懈可击。请问您一般是怎么招人的啊?

    作者回复: 1. 多问原理 2. 考察解决问题的能力,比如你遇到什么问题,问问解决的思路 3. 当场写代码

    2019-10-15
    4
    4
  • 若尘2B
    老师,您上面说的Memcache案例直击到了痛点。但是引发出另一个问题,您那次的案例是基于出现问题之前去深挖了组建的设计、原理还是问题导向。那次案例时隔多长,您现在记忆犹新。我现在的矛盾深挖原理都爱是基于问题导向,在处理阶段可以掌握那些组建的使用和问题处理,但是时间一久就容易忘记,虽然也会写使用的经验,总结,爬坑日志,但问题不再出现之后,最多2月基本忘的干净。我们该怎么管理自己掌握的技能,在面对技术迭代更新都如此之快的时代我们要怎样才不会被淘汰?

    作者回复: 问题导向是应该的,遇到问题要深挖,找到根本原因,其中肯定会了解一些原理。但是问题毕竟不多,可以多关注一些你用到组件的基本原理

    2019-10-04
    2
    4
  • 堵车
    我知道面试官要问什么,我就是答不出来。

    作者回复: 额 加油💪

    2019-10-09
    2
    3
收起评论
显示
设置
留言
38
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部