写点什么

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

作者:程序员小毕
  • 2023-07-14
    湖南
  • 本文字数:2658 字

    阅读完需:约 9 分钟

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

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

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

问题记录

  1. 自我介绍

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

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

  3. 了解 Ngnix 原理吗,Ngnix IO 模型是什么

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

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

    追问:Reactor 和 NIO 的关系

    回答:。。。

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

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

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

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

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

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

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

    回答:不了解

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

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

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

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

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

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

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

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

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

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

    追问:MVCC 在哪个级别

    回答:可重复读

    追问:MVCC 实现原理

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

    追问:undo_log 和 redo_log 的功能

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

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

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

  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 页)

注:篇幅有限,资料已整理成文档,添加小助理 vx:bjmsb0606006 即可获取免费下载方式!

一、算法(大厂必备)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 等

项目架构图:

注:篇幅有限,资料已整理成文档,添加小助理 vx:bjmsb0606006 即可获取免费下载方式!

用户头像

领取资料添加小助理vx:bjmsb2020 2020-12-19 加入

Java领域;架构知识;面试心得;互联网行业最新资讯

评论

发布
暂无评论
小红书Java后端一面,被问麻了_程序员_程序员小毕_InfoQ写作社区