5年经验社招后端面试经历分享

news2024/9/26 5:23:19

这是一位读者去年的面经,他在 2023 年在百度毕业,后面拿到了快手、滴滴和京东的 offer,最终选择了京东,薪资总包是 51w。

下面是正文。

背景介绍

大家好,本人 2018 年毕业于一所普通 211 学校,专业是软件工程,学历背景还说的过去,至少大部分情况下不会给自己拖后腿。

我于今年 1 月份在百度毕业,先后参加过腾讯、滴滴、字节、京东、快手、美团、蚂蚁等大中厂的面试。offer 阶段是在快手、滴滴和京东之间选择了京东。薪资的话,总包是 51w。

参加了很多次面试,总结了一些个人对于面试的见解,希望能给大家以后的面试带来些许帮助。本人平时注重总结一些理论知识,所以遇到毕业的情况也不太慌,也建议大家平时要卷安思危以应对未来的多种可能性的发生。下面介绍一下我在面试阶段遇到的部分面试真题与个人总结。

下面是我个人复习的一些笔记记录(笔记软件:有道):

算法

算法需要长期的准备,个人觉得 leetcode 上刷 200+个题目就足以涵盖国内大厂的面试范围了,可以在 leetcode 上去刷热门的前二百个题目。因为大概率面试官也是刷的这些题目。

面试真题

1、三数之和(经典题 注意结果的去重)

2、回文链表(链表的题目都不难 热门的几个题目刷通就 ok 了)

3、数组中的第 k 个最大元素(借助快排思想来做 所以快排当然得熟练)

4、寻找旋转排序数组中的最小值(标准二分查找的变体)

5、二叉树(比较热门 遇到过层序遍历、最近公共祖先 、最长路径和等题型)

6、复原 ip 地址(经典回溯题目)

7、动态规划(这类型题目不会太难 基础的动态规划题型要会 比如背包、打家劫舍、股票买卖等 核心是推敲出状态转移方程)

总结

算法一定要提前准备,临时抱佛脚效率非常低,有跳槽想法的兄弟,可以在日常工作中没事就刷一两个,而且一定要自己思考,不要上来就看答案,如果没有思路,那么可以看下思路解析,然后再去自己动手写,这样也可以锻炼编程能力,对于题目的记忆也会更加深刻。

Java

Java 相关的内容非常的多,对于集合、io、多线程、jvm 相关的问题比较热门。

面试真题

1、除了 clone() 还有哪些方式可以对对象进行深拷贝?

2、java 对象的内存结构?标记字是做什么的?

3、写个单例?为何静态内部类实现的单例可以做到线程安全且可延迟加载?

4、new Hashmap<1000>new Hashmap<10000> 在数据都塞满的时候有什么区别?(提示 扩容相关)

5、java 弱引用和虚引用的区别?

6、垃圾回收时标记存活对象的三色标记法原理,以及在出现漏标、错标情况时是如何解决的?

7、jvm 调优你如何做的?现象->排查过程->解决方式->不同解决方案的对比与选择

8、为何引入 JIT 编译?逃逸分析是什么?

9、多线程中的三大问题 java 是如何解决的?

10、synchronized 底层实现原理?释放锁之后如何通知其他线程获取锁?

11、讲讲 AQS?

12、synchronized 做了哪些优化?(偏向锁、轻量级锁、自旋锁、锁粗化、锁消除等)

13、LongAdder 实现原理?

14、动态代理的实现方式有哪些?对比与选择?

文章推荐:

  • 如何检测和避免线程死锁?
  • 从 5s 到 0.5s!看看人家的 CompletableFuture 异步任务优化技巧,确实优雅!
  • 为什么线程崩溃不会导致 JVM 崩溃?
  • 什么是乐观锁和悲观锁?Java 中 CAS 是如何实现的?
  • Thread、Runnable、Callable、Future … 的关系?
  • 如果不允许线程池丢弃任务,应该选择哪个拒绝策略?
  • 线程池中线程异常后,销毁还是复用?
  • 如何设计一个优先级任务线程池?

总结

这些知识很杂,需要大家平时多积累一下,我推荐 《Java 面试指北》 以及 JavaGuide,这里面对上面的问题均有涉及,知识面非常广,对我的帮助也很大。

数据库和消息队列

MySQL

面试真题

1、索引(为何使用 b+树而不是使用别的数据结构? 索引下推?倒排索引?)

2、事务(ACID 隔离级别 幻读如何出现的 又是如何解决?)

3、锁(给一个 sql 问这条 sql 在不同隔离级别下是如何加锁的?)

4、mvcc 机制(实现原理以及 rr 和 rc 隔离级别下实现的区别?)

5、redolog undolog binlog(会问分别是用来做什么的 有什么共同点 区别?)

6、sql 优化(选择一个适合自己业务的 sql 场景 描述清楚自己如何通过 explain 命令来分析和优化的?)

文章推荐:

  • MySQL 支持哪些存储引擎?MyISAM 和 InnoDB 有什么区别?
  • 为什么要用索引?MySQL 索引底层数据结构是什么?
  • MySQl 索引失效的场景有哪些?
  • MySQL 中有哪些锁?表级锁和行级锁有什么区别?
  • 为什么 MySQL 不建议使用 NULL 作为列默认值?
  • MySQL 的默认隔离级别是什么?可以解决幻读问题吗?
  • MySQL 怎么解决慢查询问题?
  • 能用 MySQL 直接存储文件(比如图片)吗?
总结

MySQL 在后端面试中几乎是必问的重点,一定要提前认真准备,像索引、锁、事务等知识点,一定要多复习几遍。

Redis

面试真题

1、底层数据结构有哪些?跳表实现原理?为何不用红黑树?

2、Redis 的过期策略?

3、Redis 的持久化?

4、Redis 主从、哨兵、集群工作原理?三种部署方式的区别?

5、缓存穿透、击穿、打满、雪崩出现的原因与常用解决办法

6、热 key 的解决方案(如何发现 如何优化)

文章推荐:

  • 这 7 道 Redis 基础问题,很常见!!
  • Redis 除了缓存还能做什么?可以做消息队列吗?
  • 本地缓存和分布式缓存有什么区别?如何选择?
  • 为什么 Redis 不立刻删除已经过期的数据?
  • 宕机了,Redis 如何避免数据丢失?
  • 如何发现 Redis 热 Key,有哪些解决方案?
  • Redis 大 key 有什么危害?如何排查和处理?
  • Redis 内存碎片是什么?如何清理?
  • Redis 如何使用批量操作提高效率?
总结

Redis 在后端面试中几乎也是必问的重点,一定要提前认真准备,像底层数据结构、持久化策略、集群等知识点,一定要多复习几遍。

MQ

面试真题

1、Kafka 基本工作原理?

2、Kafka 为何高吞吐?

3、Kafka 消息的可靠性、顺序性是如何实现的的?

4、Kafka 的 ISR 机制?

5、Kafka 与其他 MQ 的对比与选择

文章推荐:

  • Kafka 系列 - 码哥
  • 消息队列的应用场景有哪些?
  • 有哪些消息队列?如何选择?
总结

可选择自己熟悉的 MQ 进行面试,我选择的是 Kafka。

总结

很多人在准备数据库和消息队列这块面试的时候会选择看一些经典的书籍,但是我觉得如果是应付面试的话,有点没必要,书中知识枯燥乏味,且重点不突出,所以我建议这部分内容的准备可以去针对性的看一下文档,一定要深入理解其实现原理以及为何这样实现。我还是选择在 《Java 面试指北》 以及 JavaGuide 中看了很多关于数据库和消息队列的资料,这些资料足以去应对面试了(非托,真心推荐,内容真心不错!!!)。

项目

这部分的内容比较活,但是也需要提前模拟与准备

面试真题

1、 介绍一下你的项目以及你做了哪些?

2、说一下在项目中你觉得有挑战(亮点、难点)的工作?

3、生产环境遇到过哪些问题?

4、在这个项目中你学到了什么?

总结

这部分因人而异,关键在于你要去挖掘你项目中的亮点,没有亮点就去编造一些亮点,但是前提是一定要符合你们具体的业务场景,不然会假的很明显,给面试官留下不好的印象。

另一个比较重要的点就是你在项目中做了什么,这部分内容也需要提前好好准备,是必问的。其次是需要提前准备一些在项目生产环境中出现的异常,以及你的解决方式是什么。对于项目的准备,我认为这三点是非常重要的,大家可以按照自己实际项目来认真思考。项目部分很大程度上会决定你是否能过通过这次面试。

分布式

分布式就不多说了,什么 base 理论,raft 协议都需要知道。另外就是分布式锁、分布式事务相关的一些知识,大家用到过的可以讲讲,比较加分,没用到过的面试官一般也不会问到。

总结

面试说到底还是两个人沟通的过程,所以表达能力要好,逻辑思维要清晰,要说可以让面试官听懂的话,而不是自己能听懂的话。对于技术知识,技术最终还是要回归到实践,只有真正的实践过,才可以更好的掌握技术,最后希望大家都可以拿到自己心仪的 offer。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2089535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Redis】Redis 的消息队列 List、Streams—(六)

目录 一、消息队列二、List 方案三、Streams 方案 一、消息队列 我们一般把消息队列中发送消息的组件称为生产者&#xff0c;把接收消息的组件称为消费者&#xff0c;下图是一个通用的消息队列的架构模型&#xff1a; 消息队列在存取消息时&#xff0c;必须要满足三个需求&…

基于yolov10的PCB检测算法研究

内容&#xff1a;项目将YOLOV10创新后的PCB检测算法成功部署到GD32H757上&#xff0c;实现PCB缺陷的工业产线实时检测。 项目主要支持开源代码&#xff1a;HomiKetalys/gd32ai-modelzoo: Provide deployable deep learning models on gd32 (github.com) &#xff08;想了解将…

群晖7.2.1 半洗白后安装AME

1. 群晖打开SSH 2. Xshell登录群晖 用管理员账户登录&#xff0c;然后使用sudo -i 获取root权限&#xff0c;sudo -i是要再次验证管理员密码 sudo -iSA6400还需要运行这个命令 /usr/syno/etc/rc.sysv/apparmor.sh stop #DSM7.2 AME版本3.1.0-3005强制解锁激活命令 curl -sk…

最常用集合 - ArrayList详解

ArrayList介绍 ArrayList实现了List接口&#xff0c;是顺序容器&#xff0c;即元素存放的数据与放进去的顺序相同&#xff0c;允许放入null元素&#xff0c;底层通过数组实现。除该类未实现同步外&#xff0c;其余跟Vector大致相同。每个ArrayList都有一个容量(capacity)&…

MeshAnything V2来了!30秒生成建模师级Mesh!最大可生成面数提升至1600.

GitHub已揽星1.9k的MeshAnything项目上新了V2版本&#xff0c;由来自南洋理工大学、清华大学、帝国理工学院、西湖大学等研究人员完成。 MeshAnything V2相比V1&#xff0c;使用了最新提出的Adjacent Mesh Tokenization&#xff08;AMT&#xff09;算法&#xff0c;将最大可生…

mysql学习教程,从入门到精通,MySQL介绍(1)

1、MySQL 教程 本教程是为初学者准备的&#xff0c;以帮助他们理解与MySQL语言相关的基础知识和高级概念。 mysql MySQL 是最流行的关系型数据库管理系统&#xff0c;在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System&#xff1a;关系数据库管理系…

浏览器的高级搜索

一、背景 通常我们在浏览器搜索内容都是直接在输入框输入我们想要查询的内容&#xff0c;但是这样搜索出来的内容关联性不是很高&#xff0c;很多内容都是与我们搜索内容无关&#xff0c;会浪费我们大量的时间去查找内容。比如&#xff1a;我想要搜索网页中包含《游戏科学》这4…

kafak集群搭建-基于kRaft方式

kafak集群搭建-基于kRaft方式 1、服务器规划2、kafka集群部署配置2.1、解压三个kafka2.2、配置/config/kraft/server.properties 3、启动kafka集群4、SpringBoot集成kafka的kRaft集群4.1、消费者4.2、生产者4.3、配置类4.4、实体类4.5、JSON工具类4.6、项目配置文件4.7、测试类…

【web开发】Spring Boot 快速搭建Web项目

Date: 2024.08.30 13:52:20 author: lijianzhan 简述&#xff1a;【Spring Boot 快速搭建Web项目应用】是一篇关于Java Web项目构建的文章&#xff0c;主要讲解了如何借助Maven工具来管理和构建Web应用程序。Maven是Java开发中广泛使用的自动化构建工具&#xff0c;能够帮助开…

顺序循环队列

顺序循环队列 队头插入元素&#xff0c;队尾删除元素 本来应该判空和判断是否存满的条件都是&#xff1a;队头 队尾&#xff0c;但这样就没办法区分了&#xff0c;所以&#xff0c;就牺牲一个空间&#xff08;比如长度为10&#xff0c;但只能存9个&#xff09;&#xff0c;这…

基层医疗云HIS系统源码:云计算、大数据等现代信息技术研发

云HIS源码&#xff0c;基层云HIS系统源码&#xff0c;基层医疗云HIS系统 利用云计算、大数据等现代信息技术研发的基层医疗云HIS系统实现了医院信息化从局域网向互联网转型&#xff0c;重新定义医疗卫生信息化建设的理念、构架、功能和运维体系。实现了医院信息化由局域网向互…

CAN协议通信 学习笔记

文章目录 1.CAN通信简介2.物理层2.1 CAN总线的电气特性2.2 CAN的位同步机制&#xff08;了解&#xff0c;用于理解CAN的初始化参数的配置原理&#xff09;硬同步方式重新同步方式 2.3 CAN对比其他常用协议的优势 3. 数据链路层3.1 CAN协议的数据帧3.2 仲裁机制3.3 访问控制3.4 …

python-FastApi框架

文章目录 FastApi一. 简介二. 特性三. 安装1. 安装fastapi模块2. 安装ASGI服务器( Uvicorn 或者 Hypercorn) 四. 实例1. 创建**main.py**文件(GET请求)2. 运行3. 测试4. 更新main_py(加入PUT请求) 五. 自动化API文档1. Swagger UI(交互式文档)2. ReDoc(可选式文档) FastApi 一…

华为云征文|Flexus云服务器X,云上性能新飞跃,开启业务增长新纪元

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;AWS/阿里云资深使用…

想告诉所有人,我找到脸书视频保存方法啦!

各位集美集帅们&#xff0c;我可算找到脸书视频的保存教学啦。作为社媒体人&#xff0c;在脸书看到有趣的素材却保存不了时真的要急的爆炸了。试了好多方式&#xff0c;这软件是最给力哒&#xff0c;我不管&#xff0c;下面的步骤介绍你一定要看完&#xff01; 打开脸书&#x…

JVM面试(一)什么是虚拟机?什么是class文件?

什么是java虚拟机&#xff1f; 如果通俗点来讲&#xff0c;我们在电脑上一行行敲出来的代码&#xff0c;电脑本身是不认识的&#xff0c;最终是要转成电脑可以运行的101001这种字节。 但是这些我们又不可能手动来转换&#xff0c;所以呢&#xff0c;就需要一个工具&#xff0…

关于redis存储数据类型选择

项目使用的spring-boot&#xff0c;操作redis使用的是spring redis的api 在序列化的时候&#xff0c;如果往redis存入的是比较小的数字&#xff0c;反序列化的时候&#xff0c;会是integer类型 如果字段定义的是Long类型&#xff0c;因为比较小&#xff0c;所以被反序列化成i…

Cadence高速板设计技巧(全志H3)

市场上一般的电视屏幕是4K的&#xff1a; cadence查找&#xff1a; 右侧的面板FIND里面输入要查找的名字就可以进行查找。 全局查找需要鼠标点击到.DSN的&#xff0c;进入全局。 在视图里选择一个层就可以单独查看这个层的东西&#xff0c;屏蔽掉其他层的东西&#xff1a; 共…

linux命令:用于删除空目录的命令行工具rmdir详细介绍

目录 一、概述 二、用法 1、基本语法 &#xff08;1&#xff09;选项 &#xff08;2&#xff09;目录... 2、主要选项 &#xff08;1&#xff09;-p, --parents &#xff08;2&#xff09; -v, --verbose &#xff08;3&#xff09; -h, --help &#xff08;4&#x…

Mysql基础练习题 596.查询至少有5个学生的所有班级 (力扣)

596.查询至少有5个学生的所有班级 建表插入数据&#xff1a; Create table If Not Exists Courses (student varchar(255), class varchar(255)) Truncate table Courses insert into Courses (student, class) values (A, Math) insert into Courses (student, class) value…