跨专业学习 6 个月,成功上岸阿里|滴滴,分享学习路线供大家参考
本科双非化学,跨考了电子硕士,研究生依然双非。无互联网实习,无比赛无论文。(有自动化和高校实训讲师相关的实习经历)
19年5月份开始学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框架造轮子,更吃香)。
小编妥妥的全给大家整理好了:
最后,根据这些资料,我在学习中做到笔记,最终也形成了一份知识体系图,我稍微整理了一下,就是下方这样
因为图片太大,没有办法完整上传,有需要的朋友
1、 码云上发布了部分资料,可以直接获取:https://gitee.com/biwangsheng/personal.git
2、直接关注我的公众号:Java架构师联盟后台回复(Java、架构、书籍关键字即可获取相应资料)
版权声明: 本文为 InfoQ 作者【小Q】的原创文章。
原文链接:【http://xie.infoq.cn/article/b12f0110935a333422a301232】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
评论 (1 条评论)