前言
从接触编程就开始使用 Git 进行代码管理,先是自己玩 Github,又在工作中使用 Gitlab,虽然使用时间挺长,可是也只进行一些常用操作,如推拉代码、提交、合并等,更复杂的操作没有使用过,看过的教程也逐渐淡忘了,有些对不起 Linus 大神。
出来混总是要还的,前些天就遇到了 Git 里一种十分糟心的场景,并为之前没有深入理解 Git 命令付出了一下午时间的代价。
先介绍一下这种场景,我们一个项目从 N 版本升到 A 版本时引入了另一项目的 jar 包,又陆续发布了 B、C 版本,但在 C 版本后忽然发现了 A 版本引入的 jar 包有极大的性能问题,B、C 版本都是基于 A 版本发布的,要修复 jar 包性能问题,等 jar 包再发版还得几天,可此时线上又有紧急的 Bug 要修,于是就陷入了进退两难的境地。
最后决定先将代码回退到 A 版本之前,再基于旧版本修复 Bug,也就开始了五个小时的受苦之路。
美团一面:
收到了HR的信息,通知我去面试,说实话真的挺紧张的。自己准备了近一个月的时间,很担心面试不过,到时候又后悔不该“裸辞”。
- 自我介绍
- spring的IOC,AOP原理
- springmvc的工作流程
- handlemapping接收的是什么
- 项目中你用到了MyBatis,说说#和$的区别
- MyBatis你写的XML怎么绑定对应的接口?namespace.id
- Spring有几种方式定义Bean
- git你用过哪些命令
- linux怎么在查找目录下的一个文件
- redis基本数据结构
- redis单线程模型
- 事务的四大特性
- 解释线程池的三个主要参数
- 具体的问项目中线程池如何使用的(这里因为有些忘记,导致扣了很久)
- AQS都有什么公共方法
- 那单例模式和prototype模式,spring都是怎么实现的
- 计算机网络应用层都有什么协议
美团二面
第二面问的挺多的内容,只记得个大概,所以也只能分享一个我所能记忆到的面试内容
- 描述从输入一个url到得到结果的过程
- springMVC的执行过程
- MVC设计模式
- static变量初始化在哪个阶段
- jvm堆中的内存区域分布
- 垃圾收集算法
- redis如何实现高并发
- synchronized是可重入的吗?是公平还是非公平
- 公平锁和非公平锁的区别、
- 项目中如何使用的redis
- MySQL的的默认隔离级别、防止了什么读
- SQL题:有一个学生表,有id和name,姓名有可能重复,查询出所有姓名重复的人的名字
- 四次挥手的过程
- 动态规划的特点
- 索引结构?为什么使用B+索引
- CAS原理?用CAS实现 两个线程给同一个变量赋值
- 为什么 Redis 需要把所有数据放到内存中
- mysql的主从复制机制
- 将阿拉伯数字转换成中文数字。如(int)123456->十二万三千四百五十六
这一面自我感觉比一面好很多,面试官态度很和蔼,就让我没有那么的紧张,让我稍等一下,我也不知道下一面是情况,或者有没有下一面。
美团三面
- 自我介绍
- 介绍一个你觉得难的项目
- 说一下sql做了什么优化
- 项目中如何使用的redis
- redis如何保持和mysql的数据一致性
- 说一下都有什么类型二叉树
- 代码题:构建一个二叉树,做前序的非递归遍历
- 数据库最大的表大概多大
- 了解哪些分布式的技术
- 最近在看什么书?说一说
面试官给出的建议是,如果代码再稍微优美一点就很好了,不过也没什么大问题。然后跟我说让我等一等,出去商量商量。哎,真的太难了~~~
交叉面
来了个其他部门更牛B的大佬,感觉自己要凉,我太难了~~~
- 项目介绍一下
- AQS介绍一下
- Java中有哪些锁机制
- 介绍一下ConcurrentHashMap
- 为什么项目中用Springboot
- 用过Spring事务吗?有哪些事务传播属性
- A方法上有@Transactional注解,B方法上也有@Transactional,在一个方法里(也有@Transactional注解)。先调用A,再调用B,B出现了异常,A是否能提交?如果不能,怎样能让A提交成功
- 缓存穿透了解吗?怎么解决
- 布隆过滤器了解吗?有什么问题
- 有A,B两个大的文件集合,记录了一些订单号,怎样找到A中有的但B中没有的订单号?使用布隆过滤器可以吗
- 一个方法上有@Transactional注解,里面调用了A(),B(),C()。其中B进行了网络调用,可能传输时间比较长,这样设计有什么问题?怎么解决
- MQ用过吗
- 最近在学什么
结局:总结+分享
看完美团、字节、腾讯这三家的一二三面试问题,是不是感觉问的特别多,可能咱们真的又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。
开篇有提及我可是足足背下了Java互联网工程师面试1000题,多少还是有点用的呢,换汤不换药,不管面试官怎么问你,抓住本质即可!能读到此处的都是真爱,所以福利也为你准备,这份1000题免费送你!点击这里免费领取
- Java互联网工程师面试1000题
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的 《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
- 程序员代码面试指南–IT名企算法与数据结构题目最优解
- 其余像设计模式,建议可以看看下面这4份PDF(已经整理)
- 更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。
)]
- 更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。
[外链图片转存中…(img-gcZEvC5U-1619078599706)]
以上所提及的全部Java面试学习的PDF及笔记,如若皆是你所需要的,那么都可发送给你!