粉丝投稿

自我介绍:本科双非化学,跨考了电子硕士,研究生依然双非。无互联网实习,无比赛无论文。(有自动化和高校实训讲师相关的实习经历)

20年11开始学Java准备秋招。



【阿里】

二面

  • 公司做的项目,设计插件,

  • 讲讲项目的架构,设计,数据流,ER 图

  • Redis 使用过吧,缓存击穿的解决办法,Redis 的数据结构有哪些,Redis 的主从结构,数据分片,一致性 hash

  • JAVA 基础,存放不相同的对象使用什么数据结构,引出对象的 hashCode 和 equals方法,HashSet 是用什么结构实现的;

  • HashMap 的冲突解决办法

  • HashMap 是不是线程安全的容器,如果并发访问了JDK 是怎么解决的

  • 线程安全的容器 ConcurrentHashMap是怎么解决线程安全问题的,分段锁

  • 悲观锁和乐观锁的区别,使用悲观锁有什么影响(线程中断,慢),乐观锁有什么好处

  • spring ,spring 的 IOC 是什么,怎么实现的,突然就有点不知道从何说起,讲了有依赖注入和依赖查找,说道了使用 spring 的注解,然后容器启动的时候加载这些注解所在的类,使用反射执行执行初始化就 OK 了

  • 然后问到使用反射就可以加载一个 private 的成员吗,不能,需要设置权限

  • 如何解决循环依赖呢,用一个 Map 把依赖存起来呗,如果有说明有循环依赖

  • 平常自己通过哪些途径学习,打开文档,看博客

  • 如果有一个主线程和很多个子线程,主线程需要等子线程运行完才能继续执行,你会用什么,CountdownLatch嘛

  • 讲讲 Gc,清除,整理,交换(survivor 区域),CMS 执行的过程

  • 讲讲自己的希望未来做的事情,高并发场景和领域建模

  • 讲讲领域建模,就是 DDD 的核心思想,实现起来就是在 Service 那一层使用充血模型

  • 平常有自己写博客吗,不写笔记,996没时间写博客

三面

没整理出来,基本上开头是和二面一样的,但是问的问题会更深入和发散,比如说为什么要这样设计,这个设计有没有问题等等。和业务强相关,所以一定要对业务熟悉,但是如果业务难度不大,并发量和性能要求不高,可能在具体问题的回答深度上会和面试官期待的有所欠缺。面试官人都特别好,同时也特别厉害,能从你的描述中获得很多信息,来反问你。所以一定要熟悉整个部门业务。问题的 发散度很高,脑子工作了一天,晚上面试的时候,容易卡壳。哎,亏死了。阿里的三面难度真的很大,所以一定要保持一个好的精神!!!!!

【滴滴】

一面

  • java SPI机制实现 ?dubbo的spi有啥不同,为什么,有没有看过dubbo的源码,它的上下文可以讲一下吗,dubbo的泛化调用有了解吗?

  • 如何提升系统稳定性? 业务监控,监控哪些内容?qps,rt,失败率。

  • 限流降级熔断你是怎么使用的?

  • 如何解决 本地事物成功,消息发送给消息队列成功,但是由于网络原因而没有收到成功的回复? 事务消息

  • concurrent hashmap 如何解决 并发插入桶的第一个元素的问题?

  • threadlocal的实现讲一下?如何将父线程的threadlocal变量传给子线程?

  • 加锁的流程讲一下。Aqs的实现讲一下?

  • 双重检验的单例实现,volatile解决了什么问题,只用synchronized关键字可以吗,为什么不可以?

  • 数据库,MVCC的实现讲一下?多版本体现在哪里实现上是怎样的?B+树索引有了解吗?怎么解决不可重复读的问题?

  • 分布式锁,如何解决锁超时未释放的问题

  • 动态代理是实现是怎样的,字节码层面上是怎么实现的?

  • Gc相关,新生代,老年代相关的算法流程,为什么要这样使用?

  • spring 的上下文有了解吗,ioc的实现??di注入是怎么实现的??

  • cas是怎么实现的? 交换比较是哪个变量?

  • 了解unsafe吗

  • 有哪些是你熟悉的领域也可以讲讲?

二面

  • 系统架构讲一下?数据流向?数据库设计 (ER 图)讲一下?如果一个商品列表要展示活动,如何设计的?

  • 进程和线程的区别?多进程编程有了解吗?多线程编程要注意什么?共享变量,执行时序

  • MySQL 的主从同步机制?幻读是什么?

  • Redis 的主从同步机制?

  • 使用 MySQL 的心得?加 limit, 执行计划,是否有排序,是否可以使用覆盖索引解决排序,不要将自增主键给外部

  • 二叉树的层序遍历?

  • 设计一个积分前 100 的排行榜?如果积分变更在不同的地方,如何让积分榜实时更新?发消息,监听 binlog

  • 本地事务和发消息如何保证强一致性? 事务消息可解决

  • 为什么会考虑离职?期望有个更好的平台来发展呗

二面面试官人很好,又问了些其他的,比如说公司有没有使用这些严格的机制,比如说事务消息,面试官答:工业界使用当然是越简单的机制越好,新技术可以学习,但是要引进实际生产一定要考虑其本身的复杂性,巴拉巴拉了好多

HR

本次没三面,可能是新部门吧。大致聊了以下几个部分

  1. 我对贵公司的意向度很高

  2. 我还有别的 Offer

  3. 我的期望薪资巴拉巴拉

  4. 到岗信息等等

跨专业学习历程(点击此处获取文档完整版

闲言少叙,直接上干货:

  • Java基础学习:筛选了很多网课,视频,最后发现了看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,首先学习Java语法基础,再到框架,从基础到深入,还是很容易入门的。至于视频,网络上实际上有一大堆,我这边是学长给我的珍藏版,应该是搜索不到



  • 面试体系搭建:其实很多非科班的选手,不知道面向找工作该学什么,怎么去学,贴主也走了很多弯路,最后找到一份,带你把面试会问到的知识都讲了一遍,虽然讲的比较浅,但是可以让你搭建出一个面试的知识体系,然后再深入其中每个点去学习





  • 个人项目:贴主自己搞了两个项目,一个是商铺系统,CRUD项目,展示自己的搬砖能力,一个是手撕Spring框架,展示自己的学习能力,和Java面试一样。
    Java双版本(SSM到SpringBoot)校园商铺全栈开发,这个校园商铺的项目可以自己替换成任意的CRUD项目,比如牛客的那个论坛项目技术会更厉害点。Java自研框架,决胜Spring源码,造轮子的项目如果用了,就要自己吃透里面的知识点,把Spring框架源码看熟悉。(不过根据个人面试经验,发现其实很少会问到这个项目,即使问到,问的也不深入,可能是因为面试官对Spring源码也不是特别熟悉,可以替换成RPC框架造轮子,更吃香)。



  • 面试知识深入学习:在搭建完面试知识的体系后,我们需要针对每个点深入去学习,仅仅依靠《剑指Java面试》只能满足60%的面试需求,这部分就没有捷径可走了,只能自己去钻研,但是还是稍微有那么一些捷径的,下面给大家列一个速成书单:

  • 趣谈网络协议:网易云首席架构师刘超写的,这里面介绍了计网的底层知识与协议,文章属于生动形象的那种,贴主也看过《计网自顶向下》,真的看不下去。这个专栏看完,应付面试中的计划是绝对没问题的,而且还能侃侃而谈,和面试官谈笑风生。趣谈Linux操作系统:同样是刘超的书,书名为趣谈操作系统,实际里面的内容很深很深,大量的源码分析,如果看不懂不要紧,哪里看得懂记哪里,看完会对操作系统有个大体上的了解,面试也能说个十之***,完全够用。现代操作系统:操作系统工具书,哪里不会看哪里。深入理解计算机系统:计算机体系工具书,哪里不会看哪里。深入理解Java虚拟机第3版:学习JVM的工具书,哪里不会看哪里。

  • 小编妥妥的全给大家整理好了: