相关背景
本科双非化学,跨考了电子硕士,研究生依然双非。无互联网实习,无比赛无论文。(有自动化和高校实训讲师相关的实习经历)
19年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的工具书,哪里不会看哪里。 - 小编妥妥的全给大家整理好了:
有需要完整版源码+笔记的朋友,记得关注小编,扫码免费领取哦~~~