非科班转行java,一年的辛酸路

大家好我是非科班的转行小垃圾程序媛~
今天上午把网易的二面面完,应该是过了。我的秋招应该也结束了。
作为一个本科双非,985土木的硕士研究生,从去年8月开始自学java,到现在整整一年时间。也没有实习经历,目前拿到了:字节、美团、携程、蔚来、京东、中兴、有赞、杭州端点网络、上海远景智能、杭州大华。
我记得我投递的第一份简历是vivo,然后当时八股也没咋背,只是自认为把java基础全面细致的过了一遍。谁知道做了很多的无用功。当时vivo的面试官问我什么是hash和hash表,我都回答的支支吾吾。因为那个时候还没看过源码,只是在简单的使用层面上。所以导致面试的失败,vivo还是非常好过的,一面20min后面就是hr面了。后面在面的时候也是不断被面试官嘲讽。我变开始自习细致的准备背八股文。边被边整理,然后加上不断的面试复盘。面到后面,我都不需要准备了,也不怕突然袭击,有些甚至面试官一张嘴我就知道是什么问题。哈哈哈,因为大多数面试还是具有相似性的。这里不好说哪家公司的面试风格怎么样,只能说不通的面试官风格咋样,后面我会给大家分析,并且面试官在面试初期,其实也不知道要问什么问题,大多数还是根据简历里面来的,所以大家也可以找我帮你看看简历,我会根据你的简历想到什么样的问题等等。
下面在说一下我整个准备的过程是怎么样的吧。历时不到一年,从一个编程小白到一个可以和面试官battle的老油条。
第一步:肯定是要熟悉java的基本用法了,这里就是需要学习javaSE。我建议刚开始都跟着视频走一遍,你就知道一些简单的用法。从最简单的也是梦开始的程序:编写一个helloworld程序开始。然后了解java的那有些常量类型,还有一些数据类型转化,怎么写循环语句,他们之间有什么区别,如何编写一个类,如何编写一个方法等等,开始入门java。理解java为什么是一门面向对象的语言,并体会这样做的妙处。这里建议看B站上的黑马的视频,JavaSe基础和提高。
第二步 数据结构与算法:这一部分学完之后,就要开始每天坚持刷题了,因为你还没有了解过基本的数据结构和一些算法思想,所以需要看一些视频,还有一些公众号,这里是我踩过的雷最多的地方,首先第一,你不知道看什么视频。在这里我必须先吐槽一下浪费了我整整一个月时间的韩顺平的数据结构与算法。刚开始听由于什么都不懂,开始介绍一些简单的数据结构的时候觉得还行,到后面听完了开始刷粒粒扣子的时候,发现他说的和刷题一点关系都没有。至于看啥视频比价杂散,我是一点一点收集来的,这里不好展开细说。还有就是用什么顺序刷,那些题值得刷,那些题面试高频。你们没面试过肯定不知道所以更加一头雾水。这边的资料确实难收集,后面我整理出来分享给大家,大家先把第一部分做好。
第三步:学完javaSe之后,就是比较重要的javaweb了,这里非常重要的知识点就是mysql数据库,因为这是后端开发避免不了的技术,我建议在学习javaWeb之前,整体学习一下mysql数据的使用,也可以在b站上的教学视频,先看实战篇,再看原理篇(面试的时候非常非常喜欢问mysql的底层原理。)知道怎么建表,怎么写sql语句,怎么加索引,索引的一些使用规则之后,就可以在b站上找javaWeb的视频看了,我是看的黑马的,说的不错,但是我不建议全部看,有选择的性的看,我当时是全部看了,但是我在实际面试的过程中,是发现有很多地方用不上的,所以也浪费了大量的时间。这个后面我会告诉大家如何高效有效的准备。毕竟我们是面向面试的准备哈。把时间利用到最大化才是我们的目的。我们不同人的情况不一样,可能还有些导师push的比较严重,时间就更不够用了。
第四步:也就是现在非常多企业使用的框架了,也就是SSM(Spring+SpringMVC+MyBatis),你都需要知道他们是怎么使用的就行,只看实战篇,不需要知道原理,(为啥不要掌握原理呢,因为面试不常问哈哈哈哈)。最后SSM学习完之后就开始学习SpringBoot,这个很简单,简单的花费两到三天,知道怎么用即可。
第五步也是非常非常重要的一步:就是项目,我建议你如果有时间去实习,就尽量去实习,如果没有时间,那只能向我一样做网上的开源项目,这个项目我是花钱买的两个,一个试牛客网的论坛,一个是随便找的秒杀。这里我非常后悔做这个秒杀,真的被问哭了。但是只有一个项目经理是不够的,所以我只能硬着头皮做,后面也发现很多可做的好项目。如果简历上你对一个项目特别熟悉的话,非常加分,也能让面试变简单,因为有超过一半的面试,面试官都是怼着项目问的,这一部分如果有兴趣你们可以联系我。说起来篇幅可能会非常长hhhh。
这些学完了就是比较重要的八股环节了。我个人看过非常多的八股视频,有些我是建议看的,有些我不建议。
建议看的内容有,黑马的两个,一个是深入理解JVM,一个是并发编程。这里建议有时间一定要把深入理解JVM这本书买下来,反复阅读两三遍,非常多的面试细节都在这里面,也是面试的拉分的地方。
第二个就是通用的计算机基础,操作系统和计算机网络,我建议直接看书,操作系统我学的比较烂hhhh(面试确实也不常问,但是一旦没答上来,面试官就会给你贴一个"基础不好的标签")所以还是得重视起来。然后Linux,你可以自己下载一个虚拟机,然后看一下网上的视频,用一用就熟练了。也属于面试加分项,没有时间可以不弄。
计算机网络我看的是自顶向下的计算机网络这本书。我没有买实体书,我觉得PDF比较好用,hhh。多读几遍,然后有一些是重点比如应用层Http协议,DNS、ARP、IP、TCP、UDP都是重点要一字不差的看个两三遍。最后附录会放一些我认为比较有含金量的面经吧~
以上我就是我总体的心路历程了,有一些细节,比如具体看啥视频,什么链接,每一部分学习多久比较合适,什么阶段该进行到那个部分了。可以加群讨论呀:715936698。群里我把我自己准备时候在网上搜集到的资料都放在里面了,还有上面来不及写的坑呀,还有细节,甚至你看我的面经有想讨论的都可以私我哈。哦对了还有我的面试录屏,我还保留呢,后期大家面试的时候我可以分享给大家让大家感受一下真是的面试环境。有什么问题欢迎来Q我哈。

附录:
京东一二面(已意向):
1.如何学习的
2.redis怎么使用的
3.redis怎么保证和数据库的数据一致
4.为什么要双删?第一遍清的意义是什么?
5.还有什么方法可以保证缓存和数据库的一致性
6.RabbitMQ和kafka的区别
7.知道kafka的消费者组么?一个消费者组里面的消费者可以消费不同的topic么?
8.如何保证数据不重复消费?
9.ES在项目干嘛了?
10.倒排索引
11.mysql为什么不好用模糊查询
12.最左匹配原则
13.select * from table where b = 1 and a = 2 and c = 3 and d = 4,会走索引么
14.数组和链表
15.hashmap的put的过程
16.头插法和尾插法
17.如何判断链表是否有环
18.SpringBean的生命周期
19.常用注解
20.@ResponseMapping和@ResponseBody的区别
21.四个球,一个天平,有一个假球,不知道是重还是轻。
22.反问:培养机制、薪资福利
总结:Springboot太久没用了,需要好好复习一下
面试官真的太好了~特别有礼貌~然后我问后面的安排,说一面通过了~比较简单~
二面 30min
1.数学建模怎么做的,发生争执如何协调
2.秒杀项目
3.双重MD5加密是用来干嘛的。为啥要这样做
4.为啥一重MD5不行
5.怎么实现持久化登录的
6.为什么要生成随机的token
7.不使用token会怎么样
8.为什么cooike安全性不好
9.如果有一个不存在的用户去访问呢
10.如果有大量不存在的请求过来如何处理
11.缓存预加载
12.缓存穿透怎么解决
13.布隆过滤器的原理
14.热点数据的更新时机
15.需要实时性要求很高的,但不是热点信息怎么保证时效性
16.RabbitMQ在项目中怎么用的
17.Jmeter压测怎么做的
18.有没有关注服务器的性能方面的
19.除了吞吐量还关注过什么参数
20.Spring如何处理一个请求
21.hashCode和Equals
22.如果一个对象有两个成员变量 但是值重写了一个hashcode,放到hashmap中去会有什么后果
23.JVM内存结构分别有什么用
24.G1垃圾回收器了解过么
25.反问:新人培训和多久出结果

远景智能:一二面
1.自我介绍
2.如何学习
3.redisAOF和RDB
4.线程与进程的区别
5.项目中redis怎么用的
6.ArrayList和LinkedList的区别
7.redis怎么分布式
8.分布式有什么问题
9.有哪些异常,有什么区别
10.error会怎么样
11.反问
二面:
1.Springboot怎么处理异常
2.有哪些异常
3.没有录音记不得了
比较基础,没有手撕



美团一二三面:(已意向)
一面 1h
1.自我介绍
2.JVM内存区域
3.并不是所以的对象都分配到堆上,还可以分配到哪里
4.堆的空间分配
5.方法区放那些内容
6.双亲委派和打破双亲委派
7.mysql的索引
8.说一下mysql的事务
9.有哪些隔离级别
10.四种隔离级别是怎么实现的
11.MVCC的原理
12.redolog原理
13.幻读是如何解决的
14.还知道有什么引擎么
15.两个搜索引擎的区别
16.count(*)为什么innodb不也保存一份呢
16.crash-safe能力那个日志中
17.你项目中的表示怎么设计,怎么建模的过程
18.索引怎么设计的
19.你怎么设计评论表呢
20.分页功能的设计
21.热帖排行怎么实现
22.怎么实现将一个帖子的内容呈现给页面
23.redis在你项目中怎么优化的
24.拦截器怎么实现的
25.怎么实现持久化的登录
26.那如果有一个用户直接通过URL来放你的服务器,会不会读取到别人的信息。怎么解决
27.密码怎么设置的,怎么验证的
28.敏感词过滤的实现
29.秒杀项目的不超卖怎么实现
30.压测怎么做的
31.代码:求所有子集
32.代码:二叉树是否对称
33.反问
二面1h
1.自我介绍
2.项目的注册登录功能
3.项目的表的设计
4.怎么实现持久化登录
5.redis的各种数据结构在项目中怎么使用的
6.热帖排行怎么实现的
7.项目中的比较有挑战的点
8.token怎么设计的
9.项目中的ThreadLocal是干嘛的的
10.介绍一下原理
11.ticket表怎么设计的
12.密码修改怎么设计的
13.那你密码修改之后不处理token的话老密码不还是会生效么?
14.redis和DB的一致性
15.密码怎么加密的
16.为什么redis可以提升性能
17.kafka和RabbitMQ之间的取舍
18.kafka如何保证有序性
19.秒杀项目的难点
20.如何使用mysql来保证不卖超
21.redis在分布式中会有什么问题怎么解决
22.redis的访问压力也很大怎么解决
23.如何判断优化是成功的呢?
24.JVM内存结构
24.GC的机制
25.GCroot有哪些
26.类加载过程
27.TCP和UDP的区别
28.hashmap和hashtable的却别
29.有什么是线程安全的实现
30.做题:判断链表是否有环
31.反问。
美团三面70min
1.自我介绍
2.为什么数学建模会让你激起对软件开发的兴趣,具体你在数学建模中的具体过程是怎么样的
3.你在研究生阶段做过什么样的工作
4.你的课题怎么做的
5.那你为什么没有实习呢
6.你拿到了拿下实习的offer
7.你在做研究的时候怎么查询论文的
8.比较有条理的介绍一下你怎么学习java的
9.为啥不去学一个博客去分享呢
10.你的项目是练手的还是真的有人去用
11.热帖排行是怎么做的
12.为什么选redis呢,为什么不选择mysql
13.mysql的性能极限和瓶颈是什么样的,具体的表现是什么样的分析
14.你的查询是单个查询还是批量查询
15.你怎么确认性能瓶颈是数据库出现瓶颈还是你的javaweb程序出现的最多。
16.这边有两个点:第一就是为啥是mysql是性能瓶颈,第二个就是为什么是cpu占用比较高
17.你启动mysql线程池配置参数相关的有哪些
18.你需要用更加专业的技术语言来描述,你有了解过每秒的响应次数,还是你的项目只是教学性质的区搭建
19.那你能举一个例子,你在项目中有一个技术点,你从技术的表象到技术的原理,都有比较深入的了解。
20.QPS怎么去理解
21.在压测过程中你做了那些观察
22.对线程的分析怎么去分析用什么命令
23.jstack是一个命令工具常用的参数
24.你QPS对应的优化点是什么
25.剩下的一些hr问题
26.反问
这妥妥的压力面,太恐怖了,一个点会一直问你,一直怼你。面完一度以为凉了,怀疑人生。没想到第二天接到了hr面的电话。许愿成功!


腾讯一面凉
做题:找出数组里面的出现两次的元素
1.用到过那些集合类
2.arrayList和LinkedList的区别
3.arraylist扩容
4.为什么是1.5倍
5.ArrayList里面有100个元素怎么删除中间的30到40;
6.能在循环里面删除arraylist
7.知道迭代器么
8.简单说一下什么线程安全
9.什么是CAS
10.说一下RNL
11.多线程去抢RNL的时候怎么抢锁的?还有么?
12.RNL和synchronized什么时候使用
13.并发特高的时候用哪一个?
14.知道逃逸分析么
14.知道线程池么,说一说他的参数
15.Springboot你熟么
16.既然你提到了IOC和AOP
17.介绍一下IOC
18.IOC是如何实现的
19.如何解决循环依赖
20.循环依赖中的Bean是怎么去传参的
21.介绍一下AOP
22.CGlib可不可以增强接口
23.怎么去进行权限控制
24.接口参数在Path中怎么办
25.拦截器实现的机制
26.知道过滤器么
27.怎么提高Mysql读写效率,把你知道的都说出来
29.为什么要索引
28.都有哪些索引
29.主键索引和普通索引有什么区别
30.为什么主键索引要要这样设计
31.redis是用来做什么的
32.redis为什么快
33.为什么redis单线程也快呢
34.redis的瓶颈在哪里
35.为什么瓶颈在网络的io

携程一二面(过)
1.自我介绍
2.如何编写代码计算2的15次方
3.hashmap全家桶
4.hashmap线程安全么
5.代码:1.如何判断一个数组中有重复的元素。其他方法。2.介绍两种排序算法。3.怎么用一个有序数组搭建一个二分查找树。
6.多线程访问double会怎么样
7.如何定义原子性
8.往内存里面写一个int和往内存写一个double有区别
9.线程池的原理
10.线程过度会发生什么
11.JVM的内存结构
12.垃圾回收算法
13.对象在堆上分配的两种方式
14.JDK在新版本的中垃圾回收器有了解么
15.什么是大对象
16.大对象过多会产生什么现象
17.有什么分析内存的工具
18.怎么对100亿数据进行排序
19.kafka怎么解决消息的丢失
20.错误消息怎么处理
21.反问



二面
1. 自我介绍+项目介绍
2. hashmap全家桶
3. 红黑树、b树、b+树的区别
4. redis的数据结构和如何使用的
5. 算法:一个数组全部都是数字,怎么找到重复数字最多的数字
6. 算法:topK问题
7. 说一下ThreadLocal的使用场景
8. 使用ThreadLocal使用的时候的注意事项
9. 原理
10. 如何实现持久化登录的
11. 平时有关注过什么别的技术
12. 有用过消息队列么
13. kafka和RabbitMQ的区别
14. 在不同的情况下如何选择、适用的场景
15. 有没有过实习
16. 说一下GC
17. JVM内存结构
18. 垃圾回收算法
19. 垃圾回收器
20. 怎么时候会产生栈溢出
21. 为什么一直递归就会栈溢出
22. 简单介绍一下快拍的原理
23. 快拍是稳定么?
24. 什么情况下是性能是最差的
25. 说一下你项目中的加密过程
26. token的作用与实现
27. 怎么解决超卖的问题
28. 怎么判断不能在买了呢是库存等于0还是小于等于0?
29. RabbitMQ的异步下单的过程
30. 消息队里的作用
31. 如何保证Redis和DB的一致性
32. 那怎么解决i在删除的过程中的缓存击穿的问题
33. 上分布式锁怎么上,怎么选key。
34. 两分钟的反问

字节一二三面(意向)
一面 1h
1. 学习相关
2. 有没有做过操作系统的大作业
3. 一段代码从程序到执行经历怎么样的过程(编译原理,从代码变成二进制的过程)
4. hashmap八股
5. 除了链地址法还有什么解决hash冲突的方法
6. 线程和进程
7. 什么是虚拟内存
8. 进程的地址空间
9. Spring iod 和Aop 两大核心思想
10. SpringIOC的优势说一个具体的例子
11. Spring AOC的具体使用,是怎么实现的,动态代理具体是怎么实现的
12. 代码:判断二叉树是否对称
13. 代码:有效括号

二面 1h10min
1. 自我介绍
2. ThreadLoacl的原理
3. 为什么key使用弱引用可以解决一部分内存泄漏,但是不能完全解决
4. 四大引用的区别 这里一直扯到了垃圾回收机制
5. 虚引用的具体作用
6. GCroot都有那些呢
7. 还有那些呢
8. 类的属性会造成内存泄漏么
9. 那他适合做GCRoot么
10. 为什么类的成员变量不可以作为GCRoot
11. 还有那些可以作为Gcroot ==!
12. 我:想不起来了。面试官:你根据你以前写过的代码去回忆那些可以作为GCRoot
13. 你怎么学习JVM的
14. 你在这本书里面了解到了对你有提升的知识
15. 我说了为什么要打破双亲委派的理解
16. 死锁,用你程序开发中的例子,来构造一个死锁的场景,并分析为什么会发生死锁,如何解决这个死锁。
17. 什么情况下会有线程安全的问题,为什么会发生线程安全
18. TCP为什么是三次握手?我回答了死锁还有重复开启,他说不是他想要的答案。我又说了每次握手的状态位
19. TCP的拥塞控制巴拉巴拉
20. 代码,找到链表的中间节点
21. 代码,找到倒数第n个节点
22. 交换整数第n个节点和倒数第n个节点
23. 要去一次循环内解决

三面 没录音很多都忘记了 50min
1.内存什么时候会出现一个锯齿状的波动,举一例子,为什么会造成这种情况
2.为什么垃圾回收次数发生很多会不好。
2.那内存的波形图是很小的锯齿形,很很大的锯齿形那种好,为什么好,为什么不好
这一块记不清楚了,问了超级多
3.那波动很大怎么解决?
4.在一个for循环中每次都需要建立一个很大的对象,这一个对象就快把内存占满了,不想每次都发生GC又不想每次都重新设置该怎么办。
4.redis的三大缓存问题
5.后面就是一些hr面的问题
已经 OC 回馈牛客!继续努力!

端点一二三面(意向)
1. hashmap 底层原理全家桶
2. LRU 和 如何实现 定时key的LRU 定时任务。
3. 吞吐量表达的不准确
4. 怎么实现一个用户的登录 从前端说道后端
5. 登录的ticket的怎么实现的
6. Redis在项目中怎么实现的
7. Redis的缓存策略
8. B树、B+树怎么实现的。
9. 链表和数组的区别。链表适合用在哪里数组适合用在哪里。
10. 二叉树和链表的区别
11. ThreadLocal主线程中的子线程怎么拿到user值、这个线程是new出来的。
12. GCRoot 和可达性分析
13. 什么情况下用引用计数法
14. 垃圾回收的过程
15. 可达性分析和引用计数法各有什么优点





秒杀:
1. 如何实现订单回滚
2. 如何只让一万个流量进来
3. 为什么使用ES、不适用mysql进行查找
4. 为什么模糊查询不能使用索引
5. 索引相关的问题
6. 分布式锁三种实现方法
7. ZK怎么实现消息持久化
8. redis实现分布式锁和ZK实现分布式锁有什么区别
9. redis用在了项目的什么地方
10. 为什么kafka的吞吐量比RabbitMQ的吞吐量高
11. redis的持久化机制
12. map如何删除一个key
13. 为什么回滚订单要使用死信队列、不适用会有什么问题
14. JAVA的IO
15. kafka相关的问题
16. ES为什么快
17. ZK对于kafka有什么作用、
18. HashMap为什么要采用树状结构、而不是一上来就采用树



三面
1. 秒杀系统你具体做了写什么内容,解决了什么问题
2. 超卖的队列你在redis里面实现还是在哪里实现的
3. 你又说redis里面做了限制,又实现了消息队列为什么要这样做
4. 你是听过消息队列的异步下单,那你用户怎么显示的呢?因为是异步下单不可能给用户立马显示订单完成
5. 正在下单是怎么实现的,用存到数据库里面么?
6. 防止重复下单,你是放在数据库里面生成一个唯一主键,但是你这样会不会造成数据库的性能造成影响呢
7. 那如果有故意点的很快,怎么解决
8. 那如果我想要实现一个用户最多下单五个我怎么实现呢
9. 最近在做什么
10. 你说你在看mysql,你了解到了什么没了解过的知识
11. Springboot是什么怎么介绍
12. 怎么进行版本的控制的
13. 跳表是什么
14. 跳表和树怎么进行对比,那跳表实现的过程中付出了什么样的代价
15. 抛开你系统性学习的东西,你最近看到过有意思的技术相关的内容
害不知不觉写了这么多,其实一路走来弯路真的不断,也是有所感慨。
然后里面我和一个同学的学长会定期分享自己的经历。文件中有我这一年收集的资料,然后当然有什么问题都可以问我,我会一一回答的~

#java后端开发求职##面经##京东##携程##美团##字节跳动##远景能源有限公司##端点网络科技#
全部评论
好家伙
1 回复
分享
发布于 2021-09-05 15:17
我也是转行的,和楼主比起来我好菜啊,目前就一个小厂意向,努力向你学习
1 回复
分享
发布于 2021-09-05 16:03
阅文集团
校招火热招聘中
官网直投
虽然不太理解为什么东南土木还是转了码,但还是被楼主优秀到了,优秀的人无论做什么都是优秀的!
1 回复
分享
发布于 2021-09-05 20:11
感觉像pianzi
1 回复
分享
发布于 2021-09-10 22:09
开学研二,辗转反侧不能眠,下定决心向你学习,都给我狠狠的卷。希望明年我也能像你一样!!!
1 回复
分享
发布于 2021-10-01 02:07
点赞 回复
分享
发布于 2021-09-05 12:56
远景给意向了嘛
点赞 回复
分享
发布于 2021-09-05 14:14
我要是有这么优秀就好了😂
点赞 回复
分享
发布于 2021-09-05 15:45
真人均秒杀,不过你面试的内容确实挺可的
点赞 回复
分享
发布于 2021-09-05 16:06
楼主,远景是什么时候完成面试的?大概是过了多久给的意向?
点赞 回复
分享
发布于 2021-09-05 16:10
太强了
点赞 回复
分享
发布于 2021-09-05 16:22
好家伙我直接好家伙,大佬请收下我的膝盖。
点赞 回复
分享
发布于 2021-09-05 17:00
真的牛啊楼主。。。
点赞 回复
分享
发布于 2021-09-05 17:16
楼主你好,网易就出结果了吗
点赞 回复
分享
发布于 2021-09-05 17:58
学姐太励志了!我也在走你这条路并且刚刚开始, 看到你的成功和你背后付出的努力,我可以感同身受。现在压力和动力并存!🤒加油加油
点赞 回复
分享
发布于 2021-09-05 18:58
tql
点赞 回复
分享
发布于 2021-09-05 18:58
太强了  是论坛项目嘛
点赞 回复
分享
发布于 2021-09-05 19:16
太强了吧
点赞 回复
分享
发布于 2021-09-05 19:46
这就是传说中的offer收割机么,爱了爱了
点赞 回复
分享
发布于 2021-09-05 19:58
厉害
点赞 回复
分享
发布于 2021-09-05 19:58

相关推荐

172 741 评论
分享
牛客网
牛客企业服务