写点什么

我用了 3 年,从小厂干到美团 L8 技术专家!分享一下面经!

作者:Java高工P7
  • 2021 年 11 月 12 日
  • 本文字数:1946 字

    阅读完需:约 6 分钟


4.面试复习


关于面试前的复习,重要性我就不过多赘述了,相信只要面试过的人都知道,即使是临时抱佛脚,也比直接裸面要强得多。至于我的复习方法以及一些技巧,会在文章的第三部分详细说一说,希望能给你一些启发。


B:面试美团全过程(面试题分享)




美团一面:


  • redis 集群,为什么是 16384?哨兵模式,选举过程,会有脑裂问题么?raft 算法,优缺点

  • JVM 类加载器,自定义类加载器,双亲委派机制,优缺点,tomcat 类加载机制

  • Tomcat 热部署,热加载了解吗?怎么做到的?

  • cms 收集器过程,g1 收集器原理,怎么实现可预测停顿的?region 的大小,结构

  • 内存溢出,内存泄漏遇到过吗?什么场景产生的?怎么解决的?

  • 锁升级过程,轻量锁可以变成偏向锁么?偏向锁可以变成无锁么?自旋锁,对象头结构,锁状态变化过程

  • kafka 重平衡,重启服务怎么保证 kafka 不发生重平衡?有什么方案?

  • 怎么理解分布式和微服务?为什么要拆分服务?会产生什么问题?怎么解决这些问题?

  • 你们用的什么消息中间件?kafka,为什么用 kafka?高吞吐量,怎么保证高吞吐量的?设计模型,零拷贝

  • 算法 1:给定一个长度为 N 的整形数组 arr,其中有 N 个互不相等的自然数 1-N,请实现 arr 的排序,但是不要把下标 0~N?1 位置上的数通过直接赋值的方式替换成 1~N

  • 算法 2:判断一个树是否是平衡二叉树


美团二面:


  • Innodb 的结构了解么?磁盘页和缓存区是怎么配合,以及查找的?缓冲区和磁盘数据不一致怎么办?mysql 突然宕机了会出现数据丢失么?

  • redis 字符串实现,sds 和 c 区别,空间预分配

  • redis 有序集合怎么实现的?跳表是什么?往跳表添加一个元素的过程,添加和获取元素,获取分数的时间复杂度,为什么不用红黑树?红黑树有什么特点?左旋右旋操作

  • io 模型了解么?多路复用,selete,poll,epoll,epoll 的结构,怎么注册事件,et 和 lt 模式

  • 怎么理解高可用?如何保证高可用?有什么弊端,熔断机制,怎么实现?

  • 对于高并发怎么看,怎么算高并发,你们项目有吗?如果有会产生什么问题,怎么解决

  • 项目介绍

  • 算法:给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少,这个路径的开始节点和结束节点可以是二叉树中的任意节点


美团三面:


  • 项目介绍

  • 线上有遇到大流量的情况么,产生了什么问题,为什么数据库 2000qps 就撑不住了,有想过原因么,你们当时怎么处理的?

  • 限流怎么做,如果让你设计一个限流系统,怎么实现?

  • 算法:求一个 float 数的立方根,牛顿迭代法

  • 什么时候能入职,你对岗位的期望是什么?

  • 你还在面试其他公司么,目前是一个什么流程?


美团面试题答案:



C:如何实现质的飞跃?




1.技术沉淀(学习+积累)


对于技术新人来说,无论是在大厂小厂,还是在外包公司,基本上都是做得简单的 CRUD 工作。很多人认为,重复简单的工作对自己的技术是没有提升的,但实际上也有人能从中杀出一条血路,所以关键是你自己是否花了心思,付出了努力。


当然,我个人也有自己的一套学习方式和习惯,平时喜欢利用碎片时间来看点什么东西,比如一些技术性的书籍或文档,还有一些视频讲解等,经常会让我有一种恍然大悟的感觉,对我的工作也起到了很大的帮助。


阅读书籍文档:



看视频学习:



面试刷题:



BAT 一线大厂面试题



专题面试题


2.确立正确的技术方向


在我看来,有时候选择比能力更重要,俗话说:站在风口上,猪都能起飞。


对于程序员来说,尽早地做好自己的职业规划,确立发展路线,是很有必要的。我认为,同样的实力,善于发现和判断机会的人,永远占据先机。


程序员的发展方向,大致分为三类:


  • 架构师

  • 项目经理

  • 管理者


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


首先抛开管理者不谈,就前两个方向来说,对你的技术水平和工作能力都有一定的要求,首先我们要清楚,技术是根基,其次才是能力偏差。


比如,架构师需要你具备完善和扎实的技术体系,具有一定的修养,具备较好的系统分析和设计能力,具有丰富的开发项目经验;而项目经理,除了技术要过关以外,还应该了解软件开发的的各个环节、了解开发的各种技术和运用、了解开发队伍人员的水平和特点。


3.学习如何阅读别人的代码(笔记)


不知道为啥,很多开发人员总有一股“迷之自信”,抱着“除了我,其他每个人写的代码都是垃圾”这种想法,用杨笠的观念:为什么你明明很普通,却又那么自信?


实际上,能够在别人的代码之上继续工作是一项有多重好处的伟大技能。因为不论以前的代码是多么混乱或者考虑不周,你都需要去扩展它。


由此,它会对你两方面都带来益处:


能够阅读他人的代码是一个了解什么是糟糕设计的好机会。


能够阅读别人乱七八糟的代码的话,也使得在需要更新的时候变得容易。


我个人会阅读一些大佬的技术笔记,其中就包括了一些开发技巧和源码:


(篇幅有限,只展示部分了,笔记包括 Spring 全家桶、Redis、MySQL、JVM 等各个知识点)


Spring 源码笔记



SpringBoot 技术笔记



用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
我用了3年,从小厂干到美团L8技术专家!分享一下面经!