每月IT摘录201812

技术

1.JVM、Java并发、NIO、网络通信,这些都是一个java工程师必须具备底层技术素养。
2.关于技术广度。消息中间件、分布式缓存、海量数据、分布式搜索、NoSQL、分布式架构、高并发、高可用、高性能,这些技术,并不是说真的要求工作几年的同学每个技术都精通到源码层面,而是说你工作几年以后,应该有一定的技术广度,开阔的技术视野。各种技术你都得适当的了解一些,同时尽可能有机会的话在自己负责的项目里多实践各种技术,多体会各种技术如何组成出一套架构来解决公司的技术难题的,尽量多对各种技术都一定的实践经验。
3.技术深度的考察是中大型互联网公司面试官对一个高级/资深以上的候选人必须考察的,因为如果一个人工作5年以上,来应聘高级职位的话,那我们绝对是要求他对至少一个技术领域有着较为深入的研究的,比如说起码你得深入阅读过某个热门技术的核心源码,有一定的技术功底,可以解决一些复杂的线上故障。因为技术广度决定了你可以利用各种技术来做项目,但是技术深度决定了你的技术功底,你未来学新东西有多快,线上系统出了故障你能否快速定位和解决,你能否基于对技术的深刻理解为公司的项目设计和开发出复杂而且优秀的架构出来。
4.现在一些中大型互联网公司的面试官,很多都是技术水平非常不错的兄弟。在面试候选人的时候,一般都会采取连环炮的策略来深挖一个候选人的技术水平。
说说你们公司线上生产环境用的是什么消息中间件?
那你们线上系统是有哪些技术挑战,为什么必须要在系统里引入消息中间件?
你们的消息中间件技术选型为什么是Kafka?为什么不用RocketMQ或者是RabbitMQ?技术选型的依据是什么?
你们怎么保证消息中间件的高可用性?
避免消息中间件故障后引发系统整体故障?
使用消息中间件技术的时候,你们怎么保证投递出去的消息一定不会丢失?
你们怎么保证投递出去的消息只有一条且仅仅一条,不会出现重复的数据?
如果消费了重复的消息怎么保证数据的准确性?
你们线上业务用消息中间件的时候,是否需要保证消息的顺序性?
如果不需要保证消息顺序是为什么?
假如我有一个场景要保证消息的顺序,你们应该如何保证?
下游消费系统如果宕机了,导致几百万条消息在消息中间件里积压了,此时该怎么处理?
你们线上是否遇到过消息积压的生产故障?
如果没遇到过,你考虑一下如何应对?
你们用的是Kafka?那你说说Kafka的底层架构原理,磁盘上数据如何存储的,整体分布式架构是如何实现的,如何保证数据的高容错性,零拷贝等技术是如何运用的,高吞吐量下如何优化生产者和消费者的性能?那你看过Kafka的源码没有,说说你对Kafka源码的理解?
如果让你来动手实现一个分布式消息中间件,整体架构你会如何设计实现?

学习

1.坚持刻意学习。不断反馈纠错。自我测试。主动学习。跳出舒适区。多复习加强记忆。

猜你喜欢

转载自www.cnblogs.com/expiator/p/10126730.html