写点什么

昨天刚面完字节——面试经验和总结(已拿 offer)

作者:Geek_Yin
  • 2024-12-27
    湖南
  • 本文字数:3682 字

    阅读完需:约 12 分钟

一面时间:7 月 24 日 1 小时 ps:很基础的知识点考察,涵盖了 IO,网络等基本的理论知识,数据库和多线程会结合个人的语言和使用过的软件框架做提问,一面很基础,基本都答上来 hashmap 原理,底层实现,线程不安全的原因,怎么扩容,底层数组大小为什么是 2^n,扩容死锁产生的过程(不会), 1.7 和 1.8 的区别 concurrenthashmap 原理,结构,为什么线程安全,分段锁怎么实现 synchronized 和 lock 区别, volatile 原理了解吗 Lock 底层实现原理, AQS 怎么实现的 Redis 数据类型,删除策略,持久化方案,分布式方案,redis cluster 方案原理(没看具体的架构内容),分布式一致 hash 知道吗?IO 模型:IO 模型有哪些,select 和 epoll 原理,select 的缺点(搞 Java,如果没有高并发场景的经历,IO 这块也就不怎么了解了,基本都是复习多线程的知识去了)OSI 模型(五层和七层)介绍下 tcp 和 udptcp 握手,挥手慢启动,快速重传,快速恢复 time-wait 介绍下 innodb 特点 innodb 索引物理结构主键,回表,覆盖索引与 MyISAM 对比算法:三数之和,要求给出时间复杂度和空间复杂度,刚开始暴力三重循环,后来要求优化二面时间:7 月 31 日 1 小时 ps:结合项目经历提问,面试官会结合简历和一面结果适当补充一些基本理论知识和常用框架的提问,个人对kafka不太了解,可能面试官不太满意项目经历:分库分表,不借助中间件怎么实现,MyCat 了解过吗(不了解),分库和分表怎么选择?结合项目场景讨论划分规则其他项目经历,反射、注解的原理,有用过线程池吗?Java 线程池有哪几种?Java 线程池的构造参数?什么是阻塞队列?Java 有哪些阻塞队列?https 建立连接的过程是怎样的?了解中间人攻击和跨域攻击吗?进程与线程的区别和联系进程的切换发生了什么线程的切换为什么比进程的切换代价小进程通信的方式和举例 kafka 的产生背景和在项目中的使用 topic 和partition,partition 是干什么的 Consumer Group 是干什么的怎么将 partition 分配到多个 broker 上?怎么动态调整 partition 和 broker 的数量?rebalance 什么时候发生,rebalance 过程(这个真不知道)Linux 的 shell 用的怎么样?grep、sed、awk 有用过吗?(只会 grep...)怎么监控机器性能?Linux 文件系统了解吗?软连接和硬连接?矩阵顺时针旋转 90°和逆时针旋转 90° 股票买卖(几个变种问题没做出来,但是基本的应该还行)三面时间:8 月 6 日 1 小时 ps:主要是系统设计,发散性问题,另外,面试官吐槽了我的简历,建议简历老老实实套模板,不要花里胡哨,程序员的简历要整洁明了 kafka 如何做到高可用(不会,面试官不太满意,因为我的工作经历没有互联网高并发,而且 kafka 的确没怎么看)设计热榜,动态展示 top KN 个线程交替打印,怎么实现,写出来,跑一下设计长短地址转换四面基本流程,问离职原因,聊人生等等

总结整体字节跳动的面试感受,面试官很专业,要求基础知识很熟悉,面试之前一定要准备后再去面试。LeetCode 题目也要刷。手写算法留的时间不多,3-10 分钟,如果 3 分钟还没写,就要求讲出解题思路。切记面试前一定要刷题和准备,简历上的项目不熟悉的千万不要写上去,写上去的项目备好 2-3 个技术方案。分享一些面试字节跳动必刷的面试题与学习文档

为此我专门整理了一份《Java 进阶学习》分享给大家,内容涵盖:计算机基础、Java、JVM、spring、算法、微服务、分布式、大厂面经、技术脑图等等...共 1600+页 质量非常高!!!

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

有需要的小伙伴可——【点击免费领取】

内容如下:

  • 大厂面试题真题解析(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 页)

内容展示:

Java 基础部分

  • Java 概述

  • 基础语法

  • 面向对象

  • 类与接口

  • 变量与方法

  • 内部类

  • 重写与重载

  • 对象相等判断

  • 值传递

  • Java 包

  • IO 流

  • 反射

  • 常用 API

  • 集合容器概述

  • Collection 接口

  • HashMap

  • 多线程

  • Java 异常

  • Tomcat

  • 并发编程

  • Java 基础面试题



JVM 部分

  • JVM 的主要组成部分及其作用

  • 堆栈的区别

  • 处理并发安全问题

  • 内存溢出异常

  • JVM 内存模型,GC 机制和原理

  • 双亲委派

  • 深拷贝和浅拷贝

  • JVM 性能调优

  • 线程

  • JVM 内存区域

  • JVM 运行时内存

  • 垃圾回收与算法

  • JAVA 四种引用类型

  • GC 分代收集算法 VS 分区收集算法

  • GC 垃圾收集器

  • JAVA IO/NIO

  • JVM 类加载机制

  • JVM 面试高频题



多线程部分

  • 线程,程序、进程的基本概念。以及他们之间关系

  • 线程的基本状态

  • 线程的创建方式

  • 线程池原理

  • 线程的生命周期

  • 线程安全

  • volatile 关键字的用法:使多线程中的变量可见

  • volatile、ThreadLocal 的使用场景和原理

  • synchronized、volatile 区别

  • synchronized 锁粒度、模拟死锁场景

  • Java 并发和并行

  • 怎么有效提高并发量

  • 进程通讯的方式:消息队列,共享内存,信号量,socket 通讯等

  • 线程通讯

  • 并发、同步的接口或方法

  • 同步锁与死锁

  • 进程调度算法

  • CAS

  • AQS

  • NIO

  • 多线程面试高频题



MySQL 部分

  • 数据库基础知识

  • 数据类型

  • 引擎

  • 索引

  • 事务

  • 视图

  • 存储过程与函数

  • 触发器

  • 常用 SQL 语句

  • SQL 优化

  • 数据库结构优化

  • MySQL 锁:悲观锁、乐观锁、排它锁、共享锁、表级锁、行级锁

  • 分布式事务的原理 2 阶段提交,同步异步阻塞非阻塞

  • 数据库事务隔离级别,MySQL 默认的隔离级别

  • Spring 如何实现事务

  • JDBC 如何实现事务

  • 分布式事务实现

  • SQL 的整个解析、执行过程原理、SQL 行转列

  • 红黑树的实现原理和应用场景

  • MySQL 分表自增 ID 解决方案

  • 理解分布式id生成算法 SnowFlake

  • MySQL 索引背后的数据结构及算法原理

  • MVCC

  • MySQL 索引原理之聚簇索引

  • 关系型和非关系型数据库区别

  • MySQL 面试高频题



Spring 部分

  • Spring lOC

  • Spring AOP 的原理

  • Spring AOP 两种代理方式

  • Spring 如何保证 Controller 并发的安全?

  • Spring 中用到哪些设计模式?

  • Spring IOC 的理解,其初始化过程?

  • Spring 的事务管理

  • Spring MVC 概述 Spring 概述

  • Spring 控制反转(IOC)

  • Spring 注解

  • Spring 数据访问

  • Spring面向切面编程(AOP)什么是 AOP

  • SpringMVC 面试题

  • SpringMVC 原理

  • Spring 数据访问

  • Spring 原理

  • Spring 核心组件

  • Spring 面试高频题



SpringBoot 部分

  • Spring Boot 概述配置

  • 安全

  • 比较一下 Spring Security 和 Shiro 各自的优缺点

  • Spring Boot 解决跨域问题

  • 监视器

  • 整合第三方项目

  • Spring Boot 实现异常处理

  • Spring Boot 特性

  • Spring Boot 原理

  • Spring Boot 实现定时任务

  • Spring Boot 比 Spring 做了哪些改进?

  • Spring Boot热加载

  • Spring Boot 设置有效时间和自动刷新缓存,时间支持在配置文件中配置

  • hibernate和 ibatis 的区别

  • 讲讲 mybatis 的连接池

  • Spring Boot 经典面试题



SpringCloud 部分

  • 什么是 Spring Cloud

  • 为什么需要学习 Spring Cloud

  • Spring Cloud 发展前景

  • Spring Cloud 对比下 Dubbo,什么场景下该使用 Spring Cloud?

  • Spring Cloud熔断机制介绍

  • CAP 原理和 BASE 理论

  • 分布式事务、分布式锁

  • 设计目标与优缺点

  • 整体架构

  • Spring Cloud Config

  • Spring Cloud Netflix

  • Spring Cloud Bus

  • Spring Cloud Sleuth

  • Spring Cloud Stream

  • Spring Cloud Task

  • Spring Cloud OpenFeign

  • Spring Cloud 的版本关系

  • SpringBoot 和 SpringCloud 的区别?

  • 服务注册和发现是什么意思?Spring Cloud 如何实现?

  • 负载平衡的意义什么?

  • 什么是 Hystrix?它如何实现容错?

  • 什么是 Netflix Feign?它的优点是什么?

  • Spring Cloud 断路器的作用

  • Spring Cloud 面试题



Dubbo 部分

  • 基础知识

  • 架构设计

  • 注册中心

  • 集群配置

  • 通信协议

  • 设计模式

  • 运维管理

  • SPI

  • 分布式系统原理

  • Dubbo 完整的一次调用链路介绍

  • Dubbo 支持几种负载均衡策略?

  • Dubbo 支持哪些协议,每种协议的应用场景,优缺点?

  • Dubbo 超时时间怎样设置?Dubbo 有些哪些注册中心?

  • Dubbo 集群的负载均衡有哪些策略 Dubbo 是什么?

  • Dubbo 的主要应用场景?Dubbo 的核心功能?Dubbo 的核心组件?

  • Dubbo 服务注册与发现的流程?

  • Dubbo 的架构设计?

  • Dubbo 框架设计—共划分了 10 个层:Dubbo 的服务调用流程?

  • Dubbo 支持哪些协议,每种协议的应用场景,优缺点?

  • Dubbo 有些哪些注册中心?

  • 为什么需要服务治理?

  • Dubbo 与 Spring 的关系

  • Dubbo 和 Dubbox 之间的区别

  • Dubbo 和 Spring Cloud 的关系

  • Dubbo 和 Spring Cloud 的区别



Mybatis 部分

  • JPA 原理

  • MyBatis 简介

  • Mybatis 缓存

  • Mybatis 的一级缓存原理(sqlsession 级别)

  • MyBatis 缓存

  • MyBatis 数据源与连接池

  • MyBatis 的解析和运行原理

  • Spring MVC 运行流程

  • 什么是 MyBatis?

  • 讲下 MyBatis 的缓存

  • Mybatis 是如何进行分页的?分页插件的原理是什么?

  • 简述 Mybatis 的插件运行原理,以及如何编写一个插件?

  • 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?

  • MyBatis 与 Hibernate 有哪些不同?

  • MyBatis 的好处是什么?

  • 简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系



Redis 部分

  • Redis 概述

  • 数据类型

  • 持久化

  • 过期键的删除策略

  • 内存相关

  • 分区

  • 分布式问题

  • 其他问题

  • 消息中间件如何保证消息的一致性

  • 如何进行消息的重试机制?

  • Redis 数据类型

  • Redis 集群如何同步

  • Redis 的数据添加过程是怎样的:哈希槽

  • Redis 的淘汰策略有哪些

  • Redis 集群基础

  • Redis Cluster主从模式

  • Redis 为什么这么快?

  • Redis 采用多线程会有哪些问题?

  • Redis 支持哪几种数据结构 Redis 跳跃表的问题

  • Redis 是单进程单线程的,如何能够高并发?

  • Redis 如何使用 Redis 实现分布式锁?

  • Redis 分布式锁操作的原子性,Redis 内部是如何实现的?



用户头像

Geek_Yin

关注

还未添加个人签名 2022-08-19 加入

还未添加个人简介

评论

发布
暂无评论
昨天刚面完字节——面试经验和总结(已拿offer)_程序员_Geek_Yin_InfoQ写作社区