硕士211,零基础自学Java,一年拿到BAT三家offer(附面经)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硕士211,零基础自学Java,一年拿到BAT三家offer(附面经)相关的知识,希望对你有一定的参考价值。
引言1、本文没有公众号和博客推广,请放心
2、Java后台开发的经验,其他岗位没有借鉴意义
3、纯发经验攒人品,有问题留言大家一起讨论,互帮互助!!
4、个人学习方法,并不一定适合每个人。
5、 学习都是自己挤时间的,过程不表。
背景
本人本科一本双非垫底的那种,硕士211。本硕电子通信,完全0基础,转行一年。
起步
1、实话说,刚决定转行的时候完全零基础一开始真的啥也不会,甚至不知道怎么去学习。的确,计算机资源很多,自学足够的但是完全不知道怎么去用去学习啊!
啥是leetcode?
啥是github?
啥是IDEA?
各种疑问,怎么操作啊?点哪个啊?身边没有人教啊。
有时候真的只是懂的人点两下的事情,自己搞要一下午。妈个鸡,第一个月真是完全浪费时间,差点原地放弃。
调整战略
1、战略上坚定信心:既然那么多人都可以做程序员,甚至高中生都可以,别人可以我肯定也可以。
2、战术上制定计划:培训班看视频我也看视频咯,对,就是各种视频。(现在想想自己甚至就是培训班出来的)
视频的好处是快速入门,犹如身边有老师手把手教,一步一步操作给你看。很重要一点,培训班老师上课非常认真,真的是面向高中生水平讲课。完全不用担心有卡顿,看不懂。记得某门课老师还在讲啥是二进制和排列组合,,,,
这样,我先把面经给大家:
腾讯云
面的CSIG下面的腾讯云,技术栈是Java,不过几乎不咋问Java。
一面(电话)(50分钟)
-
算法题:六七道,都是剑指offer难度
-
半小时项目介绍 & 问答
-
分布式相关:rpc原理、微服务架构
-
海量数据问题:套路题
-
计网:传输层、网络层(必须要非常熟,ping的原理,tcp的三次握手、四次挥手、拥塞控制。UDP的不可靠、一对一、一对多)
-
操作系统:虚拟内存、段式、页式、进程调度算法
-
数据一致性: 分布式数据一致性、缓存数据一致性
-
Java相关:线程池、HashMap、CopyOnWriteArrayList
-
Redis相关:复制原理、持久化原理
- 杂谈:最近看什么书,实习地点。
二面(视频)(85分钟)
-
算法题:最长不重复字串
-
半小时钟项目介绍 & 问答
-
操作系统:Linux的namespace(不会)、进程线程、线程通信方式、进程通信方式
-
计算机网络:传输层和网络层,因为我项目做了链路层,也讲了一下。
-
Java相关: 线程池
-
数据库相关: 一条连表查询语句。数据库索引原理
-
海量数据问题: 套路题
- 杂谈:介绍了部门业务
三面(电话) (20分钟)
-
应该是大老板面试了,问的都很哲学:技术背景、学习方法、项目介绍
-
问了一些简单技术问题。主要考察逻辑表达和整体的素质。
- 杂谈:介绍了部门业务
hr(电话)(15分钟)
-
家庭情况
-
面腾讯原因,还有面其他公司么
-
兴趣爱好
-
业务介绍
- 口头offer
阿里
各部门简历面
-
volatile的底层如何实现,怎么就能保住可见性了?
-
三个线程如何实现交替打印ABC
-
线程池有哪些创建方式和安全性问题
-
有哪些线程池的类型
-
线程池中LinkedBlockingQueue满了的话,线程会怎么样
-
线程池的底层原理和实现方法
-
线程之间的交互方式有哪些?有没有线程交互的封装类 (join)
-
算法:堆排序、栈实现队列、反转链表
-
Java锁机制,都说一下~
-
除了@ResponseBody,controller层如何标准返回给前端所要的数据类型?你会怎么实现?
-
异常捕获处理
-
Spring MVC的原理和流程
-
HashMap和ConcurrentHashMap哪个效率更高?为什么?
-
Redis的缓存淘汰策略有哪些?
-
Java内存模型说一下
-
mybatis如何进行类型转换
-
mybatis的xml有什么标签
-
mysql锁机制
-
如何修改linux的文件权限
-
jvm的回收算法
-
你会怎么设计数据库表结构
-
数据库有哪些索引?
-
如何防止sql注入
-
抽象类和接口有什么不同
-
myql间歇锁的实现原理
-
future的底层实现异步原理
-
SpringBoot Starter原理
-
rpc原理
-
多个服务端上下线怎么感知
-
缓存和数据一致性,怎么处理。流式计算
-
多线程讲一下,FutureTask
-
Java和mysql的锁介绍,乐观锁和悲观锁
-
分布式一致性讲一讲
-
分布式锁的实现方式,zk实现和redis实现哪个比较好
-
多点登陆怎么实现
-
把乐观锁加在数据库上面,怎么实现
-
项目介绍
-
降级处理hystrix了解过么
-
两次点击,怎么防止重复下订单
-
ioc原理详细讲讲,源码看过么
-
静态代理和动态代理的区别
-
JUC说说你知道的东西
- B+树的叶子节点
菜鸟
一面
-
Java内存模型
-
full gc怎么触发
-
gc算法
-
高吞吐量的话用哪种gc算法
-
ConcurrentHashMap和HashMap
-
JDK8的stream的操作
-
volatile原理
-
有参与过开源的项目
-
项目介绍
-
线程池原理,拒绝策略,核心线程数
-
1亿个手机号码,判断重复
-
是否有写过小工具
- 单元测试介绍一下,多模块依赖怎么单元测试。Mockito
二面
-
项目介绍
-
dubbo、netty介绍原理
-
限流算法
-
zk挂了怎么办
-
秒杀场景设计,应付突然的爆发流量
-
redis的热点key问题
-
redis的更新策略(先操作数据库还是先操作缓存)
-
分布式数据一致性
-
一致性哈希
-
消息队列原理介绍(不太会)
-
full gc问题,怎么排查
-
jvm的回收策略
-
ClassLoader原理和应用
-
注解的原理
-
数据库原理,数据库中间件,索引优化
-
aop原理和应用
-
大数据相关,MapReduce
-
机器学习有了解么?
-
Java的新技术,以及技术最新进展
- Docker的原理
三面
1、全程项目
2、讨论了一下数据库表设计
四面
1、项目介绍
2、分布式事务
3、Java三大特性
4、数据库表设计
5、RPC原理
6、netty原理
7、降级策略和降级框架
HR
都是基础问题
百度
百度是去年找日常实习的面经,面了两个部门,整理了一下
信息中心
一面
算法:字符串反转 、 倒着打印链表(为什么用递归比用栈差?) 、 单例模式
线程start 、 run方法区别
可以不通过构造函数创建对象吗? object.clone() 反序列化
volatile关键字
Spring AOP原理(cglib 和 JDK的动态代理实现有什么区别?)
重写equals方法,为什么一定要重写hashcode方法?
字符串 == 比较。输出true还是false;
看了七八个程序,然后问输出什么?
HashMap 能不能存储 null 能,放在第一个格子里?concurrentHashMap 能不能存储 null?
分布式系统设计:现在有一个方法,可以给10台服务器调用,如何统计一天内10台电脑调用的次数和?
分布式锁的设计:每天早上8:00输出前一天的业务报表发到老板邮箱。如果现在有10台服务器,如果设计这个定时任务?
法1:分布式锁。法2:通过外部发来一个http请求,传给ngnix,通过ngnix自动进行分配到某一台服务器上。
二面
你对哪方面知识比较自信?
HashMap初始容量多少?(16)为啥要设计初始为16?如果传入容量10会怎么样?(还是会构建16容量的);
知道什么异常?(说几个)
http的状态码说几个。403是什么状态??
String有什么方法??
list,set集合在iterator输出的时候能删去值吗??
SimpleDateFormat是线程安全的吗??
手写左连接。
聚合函数有哪些??
三面
算法题:数组A和数组B,求 A并B - A交B;(说了几种,好像不满意不是最优解)
算法题:矩阵搜索(说完之后问优化,没想到,提示二分搜索);
SSM的运作流程,说说你做的项目难点。
GET POST请求,url里面的参数
说说索引,如果对每一列都建索引有什么不好?
白盒测试、黑盒测试
Linux会吗?
凤巢
一面
算法题:手写堆排序
Spring IOC原理 AOP原理,如何利用AOP实现日志,写过吗?
Spring bean创建的方法 注解 @Service? xml配置? @bean
Java反射原理?
SpringBoot 里面 @bean 解释一下
Java内存模型和运行时数据区
Spring 中事务@Tranctional,出现异常回滚是怎么实现的
数据库MVCC原理
乐观锁和悲观锁概念
悲观锁的实际例子。 select * from table for update ...
乐观锁实际上有没有加锁?
用两个线程去操作数据库,乐观锁具体是什么实现的?演示一遍,画一画
数据库常用存储引擎,区别,锁范围。
写过单纯的非web项目的 Spring工程, 用main实现的吗?例子。
SSM 三层技术架构的总体流程
@component @service @controller 三个区别
mybatis中 # 和 $ 的区别?哪个会出现SQL注入?
JVM 新生代,老年代。survival是不是在任意时刻都只有一块有对象?
JVM 垃圾收集器了解哪些?
二面
算法题: 实现一个四则运算计算器(两个栈 + 优先级) , 冒泡排序
输入一个网站的全过程。从计算机网络到服务器内部技术实现流程。
日常怎么学习。
头条
去年找的面经,整理了一下。三面算法没写出来,挂了。
一面
-
算法题:二分搜索相关
-
概念题:解释 分布式、微服务、负载均衡、高可用
-
http是有状态还是无状态? TCP是有状态还是无状态?
-
客户端禁用cookie怎么办? 你说的实现方式安全吗?
-
SSL,http和https,https是有状态还是无状态?
-
String为什么设计成final不可变? 是怎么实现不可变的?
-
自己能实现一个不可变的类吗?
-
equals 和 hashcode 为什么要一起重写?如果不重写hashcode会出现什么问题?
-
hashmap插入的时候,哈希冲突解决? 查找的时候,哈希冲突怎么解决?
-
hashset是怎么实现的? hashmap是怎么实现hashset的?
-
多线程:并发和并行,原子类,CAS操作
-
mysql的索引:B+树底层实现?B树的底层实现?为什么要用B+树而不用B树?
-
最左前缀匹配具体是怎么实现查找的?最左前缀匹配用了B+树的哪些特性?
-
(a,b,c)联合索引,为什么不能单用(b),而一定要用(a,b)?B+树是怎么实现的?
-
什么是幻读,不可重复读?这些概念是在事务内还是事务外? 事务内
-
mysql怎么实现可重复读?设置了可重复读隔离级别底层是怎么实现的? (MVCC)
-
了解MVCC吗?怎么实现的?什么是快照读?快照读能读取到最新的吗?快照读和当前读的区别?
- synchronized和reentrentlock哪个效率高?
二面
-
算法:实现一个缓存队列 ,二叉树的镜像
-
进程和线程的区别?内存管理说一下你的了解。进程调度算法。
-
为啥B+树最后叶子节点需要用链表相连接? 便于区间查找
-
TCP状态转换图,画一下。
-
操作系统I/O模型了解吗?epoll模型了解吗?
-
CopyOnWriteArrayList的相关特性?
- ArrayList遍历的时候能删除元素吗? 删除的时候会报什么异常?
三面
-
算法题: (1)树的节点最大距离(2)区间覆盖 例 [1 3] [2 5] [3 6]能否覆盖[2 6]
-
Linux相关命令。
- 手写SQL,join
一些补充
学习方式:
我比较喜欢视频快速入门-->书籍慢慢深入-->再动手实操。
个人认为,学习不分方式,适合自己的就是好的,有些人比较歧视培训班出来的,我关注的某技术大佬就是培训班出来的,感觉非常强。
搜索资源:
有些人学的不够快是找的资源方式不对。
多向师兄师姐打听(这点就不用我多介绍了)
多加技术QQ群讨论(大家没有好环境的话,可以找我,我拉你)
有什么问题,欢迎留言沟通,在这里也祝大家都能找到一个合适的工作~
特别声明:本文素材来源于网络,仅作为分享学习之用,如有侵权,请联系删除!
以上是关于硕士211,零基础自学Java,一年拿到BAT三家offer(附面经)的主要内容,如果未能解决你的问题,请参考以下文章
农业末流211“自学Java一年”四面拼多多+三面字节跳动成功拿下Offer!