谈谈面试知识点准备
一、背景
一直当大头兵,好久没面试了,很多人有个误区:把面试题不应该背背就能过了吗?
最近面试发现现实是:面试还是偏向八股文 && 考察你是否真的理解了。(php转go的开发)
更在乎你的上限有多高?不是太关注你解决问题的能力有多强。(似乎有点讽刺)
二、为什么?
大家卷起来,肯定要区分考察度,简单的面试题被攻克了,那就考察八股文。
八股文被攻克了,那就考虑你是不是真懂了。( 让面试官觉得你懂了也是本事 )
真的知识其实是很少的,等我面完总结了下发现:其实面试的点其实是很少的,也造成了我的错觉,不就那么些知识点吗?
虽然就是那些知识点,我真的懂了吗? 错觉就是:会造成你觉得面试可以,但是面试官觉得一塌糊涂。
三、面试风格
本来应该是考察编程水平怎么样,但是基本因为一些原因导致基本都变形了,特别是网络那些面试题,基本就是细节的QA,本身用的不多。
没办法,背吧。
八股文还是偏向死记硬背,问的高级点就是问理解了。
有些面试题感觉有点过了。比如:某物的,磁盘io和网络io区别
另外一类是字节之类,问到你不会为止。
比如怎么解决缓存穿透?你说singlefight?接着会追问,问到你不会为止。
不会? 你认为应该怎么设计?
四、面试题目类型
1)QA类型问题
方案:临时抱佛脚还是很有用的
背诵的问题就是很容易忘了,虽然有些平时根本用不到,能理解还是理解下吧,毕竟还会有下次。
2)知识盲点 - 底层实现原理
有些知识盲点是想不明白的,解决方案:认真思考把它想通。
比如说之前在准备go channel的底层原理的时候
中文的很多文章属于二手理解,可能理解不了。
建议看看英文资料,相对来说讲的更清晰些。
最喜欢问概念是否清晰的问题? 为什么要这么设计?
例如:mysql的b+树的链表是双向和单向的?
3)知识盲点 - 数据结构+算法
出门左转 leetcode
4)知识盲点 - 架构类 (基本准备不了)
这些最常见的就是分布式架构相关经验,我也在学习中。
比如CAP、可用性、高并发、一致性等等
五、方法论篇
1) 纵向对比
例如:
1、数据结构:b树、b+树、二叉树、调表、红黑树的区别?
2、选型方面:rabbitmq、rocketmq、kafka区别?
2)深入学习(看书等)
比如go channel, 刚开始对发送、接收机制不熟悉,然后多找了一些资料,懂了之后,就发现简单很多了。
3)按主题/结构 (多关注社区主题分享)
这个比较高级,比如谈谈分布式锁?
Before:
我们是用的redis setnx来实现的。然后就没有然后了。
After:
有三种:数据库锁,shard application,中心化锁管理(redis、zke、tcd等)
1)数据库锁:乐观锁、给数据行加版本号
2)shard: 主要采用一致性hash, 用的不多
3) redis: set + nx参数,多节点采用Redlock。可能存在锁丢失问题,用Redisson续期。
4)zk: 大家都是上来直接创建一个锁节点下的一个接一个的临时顺序节点。如果自己不是第一个节点,就对自己上一个节点加监听器。只要上一个节点释放锁,自己就排到前面去了,相当于是一个排队机制。
5) 考虑性能用redis分布式锁(AP模式),对一致性要求高用zk(CP模式)。
推荐:技术分享:Distributed Lock Manager (陈皓)
六、最后
做大头兵,基本知识肯定够了。想往上发展,这些知识点是逃不掉的。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: