双非本化学跨专业,投岗阿里 / 滴滴后端三面,最终拿下 offer
本科双非化学,跨考了电子硕士,研究生依然双非。无互联网实习,无比赛无论文。(有自动化和高校实训讲师相关的实习经历)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 的工具书,哪里不会看哪里。
小编妥妥的全给大家整理好了:
有需要完整版源码+笔记的朋友:Java 学习、面试;文档、视频、刷题笔记+Java 全栈开发学习路线图点击这里获取
——————
评论