小红书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等

项目架构图:

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

相关推荐
互联网搬砖老肖2 小时前
Web 架构之攻击应急方案
前端·架构
zizisuo2 小时前
9.3.云原生架构模式
云原生·架构
熊大如如5 小时前
Java 反射
java·开发语言
猿来入此小猿5 小时前
基于SSM实现的健身房系统功能实现十六
java·毕业设计·ssm·毕业源码·免费学习·猿来入此·健身平台
goTsHgo6 小时前
Spring Boot 自动装配原理详解
java·spring boot
卑微的Coder6 小时前
JMeter同步定时器 模拟多用户并发访问场景
java·jmeter·压力测试
pjx9876 小时前
微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
java·spring cloud·微服务·eureka
炒空心菜菜6 小时前
SparkSQL 连接 MySQL 并添加新数据:实战指南
大数据·开发语言·数据库·后端·mysql·spark
多多*6 小时前
算法竞赛相关 Java 二分模版
java·开发语言·数据结构·数据库·sql·算法·oracle
爱喝酸奶的桃酥6 小时前
MYSQL数据库集群高可用和数据监控平台
java·数据库·mysql