近期面试总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25673113/article/details/82287818

最近两个月大大小小的面试已经不下十来场了,一共面了5.6个公司,大的有蚂蚁金服,小的有初创公司,也有做直播的等等,但是面试都是大同小异,因此来记录一下自己的不足之处以及需要加强的地方。

项目

个人的项目经验其实非常重要,很多面试官往往会从项目入手来考察个人的架构能力以及技术水平。例如会从你负责的模块、平时遇到的技术难点入手来考察你。很多同学可能会碰到和我一样的问题,就是工作上大多数时间负责的是业务模块,很多时候做的是增删改查怎么办。其实不管是业务系统还是中间件架构,我们要做的是多思考,在平时写代码的时候需要多思考那些部分可以优化和改进,并动手进行实践。平时也多看看别的代码,学习好的代码结构对面
试或者是我们工作都有着好处。

项目模块也包括一些开源技术的了解和参与,在业余实践可以多看看开源框架,例如spring、dubbo、netty等等,可以学到很多知识。

并发模块

  • 线程池
  • 锁机制
  • 线程安全

java 集合

  • 基本上都会问hashMap的原理和应用(和currentHashMap的区别必考题。。。)
  • 还会问一些hashMap的扩展,以及hashmap的注意点等等
  • guava的不可变集合的优点以及实现

JVM

  • 基本上只会问一下基本的内容,除非面试官对JVM这块非常熟悉。其他的只要看两遍《深入理解Java虚拟机》就可以应付面试(当然个人认为学习所有的知识都不是仅仅为了应付面试,真正的大牛是学以致用
  • JVM比较难的点是JVM调优(个人没有调优经验)
  • 内存溢出以及CPU100%的时候的分析以及排查方法

数据库模块

数据模块一般会从设计、优化、原理出发。面试官让你设计和分析相关的sql语句、优化一条表、数据库甚至数据库系统。优化是会让你讲解如何优化一条慢sql。原理则是考察你对数据库底层的实现了解多少。

redis 模块

redis 最常见的问题就是redis的基本结构,当然个人认为可以把这几个基本结构的内部实现原理了解是更好的。以及会涉及在那些场合使用了redis,其实也就是redis的应用场景和优点出发并结合自己的业务进行回答即可。

redis还会从如何实现分布式锁,redis是怎么实现持久化,redis遇到的问题等等出发。可以参考《redis开发与运维》这本书来学习redis相关的知识。

rpc

  • 常见的rpc系统
  • 暴露过程,引用过程,调用过程
  • rpc的组成模块和常见问题
  • SPI

Http

  • http机构
  • http响应头和请求头
  • http的缺点和优化点(安全,连接状态,效率等等出发)

IO NIO Netty

  • 这三个是可以一起比较和学习的,循序渐进,三者的区别,以及Netty相比于NIO的优点等等

其他模块

  • 序列化
  • 设计模式
  • 框架设计

目前个人的知识面广度在已经足以应付面试,但是在深度方面需要加强。很多知识知识来源于别人的博客和书本,看到了只是在脑子里过了一遍并没有仔细思考过为什么这个做,这样做的好处是什么。源码也是同理,为什么要这样设计,这样的设计的好处是什么等等。就像一个面试官所说的一样:“很多东西虽然了解,但还是需要知道为什么所以然。”

所以在后面的学习生涯中更要注重深度的加强,真正的把别人的知识化为自己的知识,并运用在自己的业务代码里。

猜你喜欢

转载自blog.csdn.net/qq_25673113/article/details/82287818