小红书Java后端一面,被问麻了

今天分享一篇小红书 2 年社招 Java 后端一面的面经,面试的风格是从一个知识一层一层深入问到底层。

从 Java IO,问到 socket 底层。从 Java 内存,问到操作系统内存。所以学习知识的时候,不要只看八股文,还是需要从点到面一层层去掌握, 才能比较好应对这类的面试场景。

问题记录

  1. 自我介绍

  2. 讲一下BIO,NIO,AIO的区别

    1. 回答:IO分为两个阶段:数据准备阶段和数据拷贝阶段;BIO需要等待数据准备和数据拷贝;NIO会轮询数据是否准备完成,需要等待数据拷贝;AIO会在数据准备完成和数据拷贝完成后收到通知,然后执行异步处理逻辑
  3. 了解Ngnix原理吗,Ngnix IO模型是什么

    1. Review:Reactor模型包含单Reactor单进程/线程,单Reactor多进程/多线程,多Reactor多进程/多线程

    2. 回答:这块讲得比较乱,讲了一下Reactor模型,把多Reactor和多进程搞混了

    3. 追问:Reactor和NIO的关系

    4. 回答:。。。

    5. 追问:为什么netty要拆成boss和worker,把accept和read/write分开的好处是什么

    6. 回答:对于单线程模型,read事件需要等待IO,会阻塞后续连接的建立;

    7. 追问:A进程建立连接后怎么交给B进程去读写

    8. 回答:讲了一些进程间通信的方式,管道,共享内存,信号量;对于socket,A进程建立好连接后,把socket的引用传递给B进程,B进程根据这个socket引用去拿到socket对象

    9. 追问:能否让主进程不创建连接,让子进程去创建连接

    10. 回答:讲了一下半连接队列和全连接队列

    11. 追问:能让子进程去负责创建连接,和各自的数据读写,知道惊群效应吗

    12. 回答:不了解

  4. java是怎么做内存分配的,堆区怎么做内存管理的

    1. 回答:堆内存会分成young区和old区,young区又分成eden区和两个surviver,new对象时,会分配在eden区,对象经过gc后分代年龄增加,达到阈值进入old区

    2. 追问:操作系统是怎么做内存管理的

    3. 回答:了解过jemalloc,内存会被分成不同大小的块,比如16KB,32KB,64KB等;用户申请内存时,会找到比申请内存大小大的第一个2次幂KB,如果对应内存大小的没有空闲块,会找更大的块,并进行拆分

    4. 追问:怎么向操作系统申请内存空间

    5. 回答:brk和mmap系统调用,brk申请堆内存,mmap分配文件映射区和匿名映射区

    6. 追问:jvm分代内存管理和操作系统内存管理的区别

    7. 回答:操作系统需要具备各种需求的内存分配,具备更细致的内存分配;JVM的内存管理是为java应用服务的,不需要像操作系统那样进行过于细致的内存管理

  5. 事务的隔离级别有哪些

    1. 回答:读未提交,读已提交,可重复读和序列化

    2. 追问:MVCC在哪个级别

    3. 回答:可重复读

    4. 追问:MVCC实现原理

    5. 回答:利用Read View结构和数据记录中的txn_id和roll_pointer,在事务开启时,记录Read View,并通过其中的数据找到可见的数据版本

    6. 追问:undo_log和redo_log的功能

    7. 回答:undo_log是用来做事务回滚,redo_log是用来做数据恢复

    8. 追问:了解MySQL多机高可用方案

    9. 回答:针对读多写少的场景,主机器负责写操作,从机器负责读操作,数据由主机器同步到从机器;针对写多读少的场景,可以进行分库分表

  6. 编程:有序数组循环位移之后,查找target数字的索引,不存在返回-1

最后

以上,就是这位朋友的部分面试总结,整体看下来,现在的面试已经不仅限于八股了,但你也不能不背八股,面试的岗位年限不同、公司不同的话,项目+八股+算法+场景问的占比也都不一样。

借此机会也向大家推荐一份我亲身整理的2023Java面试八股文大全

其内容涵盖:计算机基础、Java、JVM、spring、算法、微服务、分布式、大厂面经、技术脑图等等...共1700+页 质量非常高!!!

不管最近要不要去面试,建议大家都保存一份!!学完之后不论是 厂内晋升 还是 跳槽涨薪 都不在话下!

内容如下:

  • 大厂面试题真题解析(38页)

  • JVM(183页)

  • 多线程(221页)

  • Mysql(216页)

  • Spring(338页)

  • Spring Boot(41页)

  • 经典面试题(35页)

  • Spring Cloud(50页)

  • Dubbo(55页)

  • Mybtis+Redis(27页)

  • Linux+网络(66页)

  • MQ+Kafka+Zookeeper(40页)

  • Netty(21页)

  • 大数据+hadoop(31页)

  • 算法(38页)

  • 设计模式+项目+高并发(41页)

注:篇幅有限,资料已整理成文档,文末获取

一、算法(大厂必备)2023版

含:红黑树,B+树,贪心算法,哈希分治法,七大查找算法,动态规划,一致性算法,数据结构等...

二、设计模式(工欲善其事必先利其器)2023版

含:单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式,适配器模式,装饰器模式,代理模式等23种设计模式...

三、Netty + MQ + kafka(底层原理+面试题)2023版

含:Netty常用场景,高性能设计,架构设计,经典面试题等...

四、zookeeper + Dubbo(技术干货+面试题)2023版

含:zookeeper集群,应用场景,分布式锁,Dubbo核心功能,集群配置,负载均衡,常见面试题等...

五、Mybtis + Redis (底层原理+面试题)2023版

含:mybtis缓存,运用原理,分页,Redis事务,主从架构,缓存,穿透,穿击,降级面试题等...

六、Http协议 + Linux (底层原理+面试题)2023版

含:TCP/IP协议详细笔记,网络层架构,三四次握手,Linux概述,磁盘,目录,文件,安全,经典面试题等...

七、Mysql (底层原理 + 面试题)2023版

含:数据库基础,数据类型,引擎,索引,事务,锁,视图,sql语句,优化,mysql锁,面试题等...

八、Spring +SpringMVC +SpringBoot(底层原理 + 技术干货)

含:spring原理,周期,ioc原理,MVC事务,AOP原理,Boot配置,安全,监视器,面试题等...

九、经典面试题 + SpringCloud(大厂常见面试题)2023版

含:面试必考21问,SpringCloud熔断,cap原理,设计目标优缺点,版本关系等...

十、Java基础+JVM(技术干货+底层原理)2023版

含:Java基础,异常,NIO,HashMap,Tomcat,JVM堆栈,内存模型,调优,GC,老年代,新生代,垃圾回收,面试题等...

十一、多线程 (底层原理 + 技术干货)2023版

含:多线程基本概念,线程安全,线程出,volatile,ThreadLocal,使用场景,并发量,阻塞列队,面试题等...

十二、实战项目(Github爆火)2023版

该项目是一款标准且已上线的"网约车"应用。符合我国交通部对网约车监管的技术要求。通过了交通部对网约车线上和线下能力认定。项目原型曾在杭州上线运行。

项目中核心功能包括:账户系统,订单系统,支付系统,地图引擎,派单引擎,消息系统等 网约车核心解决方案

项目中完全采用微服务架构设计,应用了成熟的接口安全设计方案,采用分布式锁保证了分布式环境中的数据同步,用分布式事务解决了分布式环境中的数据一致性等。

前置技能:Git,Maven,Spring Boot,Spring Cloud,Redis,MySql ,RabbitMQ,ActiveMQ等

项目架构图:

注:篇幅有限,资料已整理成文档,点击下方小卡片获取

相关推荐
Postkarte不想说话3 分钟前
Ubuntu24.04搭建TrinityCore魔兽世界
后端
数据智能老司机4 分钟前
CockroachDB权威指南——SQL调优
数据库·分布式·架构
Weison4 分钟前
Apache Doris Trash与Recover机制
后端
数据智能老司机5 分钟前
CockroachDB权威指南——应用设计与实现
数据库·分布式·架构
XuanXu8 分钟前
Java AQS原理以及应用
java
数据智能老司机19 分钟前
CockroachDB权威指南——CockroachDB 模式设计
数据库·分布式·架构
codelang1 小时前
Cline + MCP 开发实战
前端·后端
风象南3 小时前
SpringBoot中6种自定义starter开发方法
java·spring boot·后端
mghio12 小时前
Dubbo 中的集群容错
java·微服务·dubbo