谈谈面试知识点准备

一、背景

一直当大头兵,好久没面试了,很多人有个误区:把面试题不应该背背就能过了吗?
最近面试发现现实是:面试还是偏向八股文 && 考察你是否真的理解了。(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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!