27

前言

三年Java后端开发经验,面的目标岗位是20k-35k的高级后端Java开发。

第一场,基本裸面,关于曾经的项目部门答的不好,所以还是得好好准备。

某C轮在线旅游公司

笔试

先做半个小时的笔试题,一共六个题目,两道go语言的基础题,一道斐波那契相关,一道数据库行列转置,一道实现一个栈,还有一道是百万计的MySQL优化

笔者没有接触过go语言,第一,二题,猜了下答案,第三题过,第四题没写出,第五题漏了内部数组收缩的场景,第六题,简单的写了几点关于建表和使用索引相关

一面(技术+项目)

没有讨论笔试题,先自我介绍,然后从项目开始问起穿插一些基础知识点的面试,难度不大。

其中有个问题,你这个项目做了一年多,里面主要实现了哪些需求,这个回答的没有条理。暴露了平常没有总结的习惯,都是业务驱动着跑。

二面(架构师面)

架构师对两年前做的一个项目比较感兴趣,由于是裸面,做的时间也比较久了,答的不是很好,也是零零碎碎的打了一些,虽然架构师表示理解,但是我也基本断定出,挂在这里了。

经验总结

  1. 面试准备很重要,对于自己的项目经历,做了些什么重要的需求一定要能够有条理的说出来,包括难点以及这样设计的原因
  2. 项目的架构以及整体流程一定要清楚,一定要知道每一个细节点

某C轮AI公司

一面(电话面+基础技术面)

聊了下Java的基础知识,涉及的点包括:

  1. StringBuilder,String,StringBuffer的区别,使用场景
  2. String不可变的设计原理,以及这样设计的原因
  3. HashMap的实现原理,1.8之后对于碰撞怎么处理的,如果key没有实现compareable接口,红黑树根据什么插入?
  4. 聊了下jvm的内存结构,线程安全的部门,各个部门的职能?
  5. 说明下类的加载过程,类加载的双亲委派模型?
  6. 聊下Spring的架构

二面(项目面+技术面)

  1. 聊了下你最熟悉的项目,描述下难点
  2. 聊了下Java的内存模型,可见性;Java线程安全实现的几种机制;HashMap并发下的问题;ConcurrentHashMap的实现,1.7和1.8的区别;Java中的并发原语,synchronized和ReentrantLock的实现原理以及区别;
  3. 聊下Java的线程池,以及使用注意点
  4. 锁和cas的使用场景,他两的区别,有没有实际测试过各种场景的性能数据,都有怎么样的表现
  5. 离职的原因,对未来的规划

面试总结

  1. Java并发知识总结不够,对于AQS了解不深
  2. 介绍项目知识没有挖好坑,没有突出项目的难点,导致面试官认为项目简单
  3. 平时总结过少,对未来规划定位不清晰,离职的原因考虑不清楚(其中想离职的主要原因就是加班太多了,但是这个又不能放在明面上说,所以一定得找到合适的理由)

某C轮金融科技公司

一面(技术面)

  1. 重点聊了Java各种集合的实现原理,以及使用场景,主要包括不限于,ArrayList,LinkedList,HashMap,HashSet,TreeMap
  2. 线程池的实现原理,线程池中的等待任务只有一个队列,如果线程池中的线程比较多,竞争会比较大,怎么解决?
  3. Java中实现高并发的几种策略(COW, cas, 锁),各自的使用场景及区别?
  4. 简单的介绍下项目?

二面(项目+技术)

  1. 聊下项目中高并发,高可用的实现
  2. 负载均衡的几种算法
  3. 问了几个设计模式的实现
  4. 分布式系统中转账问题,如何保证分布式事务,项目中怎么处理这种情况?
  5. MySQL主从复制的实现
  6. jvm的内存模型,类加载机制,jvm gc实现原理,有没有jvm线上调优经验。如果遇到线上问题,一般通过哪些步骤定位,除了看日志和走读代码还有没有其他方法?

三面(项目经理面)

  1. 聊下项目内容,以及项目目前存在的问题,优化点
  2. 有没有带人的经验,怎么带一个新人?
  3. 离职的原因,对下一份工作的期望?

问了几个问题:

  1. 目前这边开展的是新业务,怎么让大家这群“新”人很好的配合起来
  2. 目前公司这块的业务在技术上的侧重是什么,会有哪些挑战点

四面(地区技术负责人面试)

  1. 聊了下项目
  2. 下一份工作,首先考虑的三个点按优先级排列是什么?
  3. 还有几个问题记不清了

某行业C轮互联网平台公司

一面(基础技术面)

  1. 聊了下Java的基础技术,高并发模型
  2. 聊了下项目,项目的性能数据
  3. 聊了下jvm 内存模型,类加载机制,有没有jvm调优经验

等待下一轮面试

平安系子公司

一面技术面

  1. 常规的Java基础技术问题,设计集合,并发,走马观花的都问了一轮但不深入
  2. 项目介绍
  3. 离职的原因,当前的薪资水平

领导面

  1. 自我介绍
  2. 介绍项目,因为有一个项目短暂的接触过支付场景的实现,这个领导估计有过支付相关的经历,开始追着问了,并分分钟要教我什么叫分布式系统设计,系统的交互中会存在哪些问题,并且非常强势的断言我项目中的方案设计很烂,我司的架构师水平很烂,聊的不爽,直接怼回去了。
  3. 还吹牛逼说要给马总到明年要招到2w人,无形装逼,最为致命。
  4. 面试结束,应该没有后续。非常不爽面试过程中面试官高高在上的态度,项目还没有讲完,只说了其中某个点的容错设计,就开始断言系统设计烂,进而说我司架构师烂。估计平时在工作中是个小领导,习惯了颐指气使,从此平安一生黑

蓝绿厂

一面(技术面)

  1. 自我介绍+项目经历介绍
  2. 重点聊了下自己最熟悉的项目,架构,组网,性能,瓶颈
  3. Java常见集合的实现方式,说下常用的设计模式,并举例使用到的场景,手写懒加载线程安全的单例模式
  4. Redis中的常见数据结构类型,Redis实现持久化的方式,优缺点以及使用场景
  5. 大数据和高可用在项目中涉及的点
  6. MySQL主备同步的原理,怎么实现高可用?
  7. client调用A服务,A服务依赖于B服务,在不知道B是否高可用的情况下,怎么保证A的高可用?
  8. jvm的内存模型,jvm的运行时数据区,有没有jvm的线上调优经历?
  9. 回到项目的性能数据上,有没有仔细去调研过这个接口的时延的分布是怎么样的,按照28法则,肯定是某个方法耗时比较多,有没有针对这种场景的分析?

PS: 项目接口的性能时延是30+ms

二面(项目经理面+技术面)

PS:面试官会一直死死的盯着你,而且会不停的问你,还有没有更好的方式,还有没有?

  1. 有没有带人的经历,对于不上道的人,一般怎么带?
  2. 为什么你能胜任这份工作?
  3. 你说你优秀,你的优秀体现在项目的什么地方?
  4. 怎么在字符串池中查找给定的字符串?
  5. B树又没用了解?MySQL索引的数据结构是什么?MySQL的数据存储机制是什么?如何处理数据中的脏页?
  6. 解释下分布式系统中的cap理论,怎么保证ca?

面试总结

  1. 高可用,分布式是弱项,接触比较少,系统设计经验太少
  2. 带人的经验太少
  3. 混淆了B树和binary tree
  4. Redis了解不深入

总体总结

  1. 项目经历一定要准备好,目前市面上招聘基本上要求都是高并发,大数据,高可用。所以在你的项目中有哪些体现一定要提前准备好,并适当挖坑。也就是说目前还有哪些优化点可以做但是目前没有做。
  2. Java的基本功一定要扎实,不是说数据结构和算法要多么精通,但是至少Java中常见的集合的原理要知道,源码要过一遍,使用场景要了如指掌
  3. Java多线程,线程池的实现,并发包下面涉及到的经典工具,AQS,CAS,两种锁的实现,常用的并发工具,阻塞队列
  4. jvm的内存模型,HP原则,内存可见性;jvm类加载机制,类的加载过程;jvm的运行时数据区;Java gc的实现
  5. ssm框架的实现原理
  6. redis等中间件的数据结构,使用场景
  7. 高并发场景的常见处理手段
  8. 高可用系统的设计
  9. 分布式系统的设计,cap理论,分布式系统在实际场景中的运用。

codegoose
512 声望701 粉丝

日拱一卒,功不唐捐