likes
comments
collection
share

【实战】面试高频问题汇总01 - JAVA后端

作者站长头像
站长
· 阅读数 12

简介

今年不仅是世界发生大事大变化的一年,也是我职业踏入新阶段的一年。上半年一直在为面试做准备,也面试了几家公司,针对一些常见问题与答案(没有答案的面试总结都是耍流氓),常见的加分项做了一些梳理,希望能够帮到大家。

前情提要:

  • base 杭州;
  • 面试题大多来自字节、阿里系以及一些中型公司;
  • 楼主3年java经验;
  • 已入职阿里,欢迎各路大神内推:job.alibaba.com/zhaopin/pos…

项目篇

面试官在问到项目经历的时候,往往会问这么一个问题:

你做的项目中有哪些困难的点或者哪些亮点,你是怎么解决/实现的?

很多同学遇到这种问题就不知道怎么回答,感觉一直在做业务就这样一路过来了,包括一开始的我在面试中也没有好好回答。后面我试着沉淀一下自己所做过的项目,回忆下项目中做到个每个功能点是怎么分析怎么实现的,遇到哪些困难是怎么解决的,然后试着梳理下来,特别是能够整理成知识点。

但是有同学可能说了:我整理了半天也没整理出啥,想来想去也只有CURD的东东,做的只是一个小项目,怎么办?当你觉得自己做的项目拿不出手的时候,试着去想象一下你可以做的,试着去复杂化你的项目,例如优化,是不是可以用设计模式重写模块重复逻辑,例如如果项目遇到高并发高流量的时候怎么应对,通过对自己的压测可以提高性高等等,下面我会讲的更详细写。

但是注意的是一定要是自己实践的内容拿来说,如果只是说说别人做的东西很可能就会尴尬的暴露知识盲区。

再者,这个问题如果我们站在面试官的角度想想,他到底想问什么,我觉得是3个方面:你的技术驱动力,你的技术格局,解决问题并且能够沉淀下来的能力。

  • 技术驱动力:你有没有通过一些技术手段改进过你项目,试着讲讲你做过的优化用了哪些技术,面试官可以顺着着这些技术拓展开来问。
  • 技术格局:你在做需求或者项目的时候有没有考虑兼容性和可扩展性,在之后遇到相似需求的时候可以减少重复开发,甚至提高整个的开发效率。试着拿一个具体例子讲讲,例如用spring-aop无侵入的完成接口版本兼容,使用反射动态的执行处理类。
  • 复盘能力:复盘能力也很重要,你要从繁多的需求中提炼出相似点,从遇到的问题中寻找到统一的预防方案,面试官很想看到具有这种总结能力的你。

另外,面试官往往还是这么问:

你项目有遇到什么性能瓶颈吗?你是怎么解决的

针对你做的项目的性能指标也是一个不错的切入点,这时候可以说下你项目的部署情况。如果你排查过项目出现的性能问题,把具体过程列下来,能说出具体原因,能精确到具体排查顺序最好。即使没有也可以说说你知道的如何预防的知识点,然后具体是怎么实践的。

给一个介绍自己项目的经典模板:

我做过一个xxx系统,他的功能是xxxx(简单总结下)。技术栈是xxxx(说明技术栈)。我曾经用xxx技术优化过,解决了xxxx问题。系统的qps大概是xxx,曾经排查过xx问题,后面设计xxx预防和报警方案保证线上稳定。

HR篇

例举一些我准备的以及被问到的问题

  1. 裸辞的原因?

    对于这个问题我一直是这么回答的:我觉得裸辞是对自己和公司负责,如果我没有从上家离职的话我的面试就没法好好的准备,甚至可能会影响到现有工作的进展,裸辞后可以让我更好的对技术和自身进行复盘和总结,所以也是对自己负责。

  2. 作为项目的负责人,遇到多个需求方的不同需求怎么去做评估做抉择?

    这个问题着重一个词:风险评估。风险评估可以从人力,开发周期,开发成本的角度给出一个综合的评价,最后说一个完整开发的流程,例如:需求评审->设计评审->代码评审->测试评审...

  3. 如果现在让你再去实现一个你做过的系统,你会怎么做?

    其实这个问题也是考察复盘能力,把一些总结过的经验再说一遍,注意突出一个扩展性(重新设计),提前输出一些问题的预防方案。

  4. 之前看到你有面试失败的经历,请问是什么原因?

    这个问题是个大坑,当时我被问到也是心头一惊。后面冷静下来后我是这么回答的:我做的部分系统从贵公司的视角来看比较的基础和简单了,所以有些面试官认为我做的不够深。其实我的另外一个系统(转移角度)是比较全面和有深度的,当时可能面试官没有问题我也没有提到,后面我反思了就把这个项目着重的去讲。