圆你的大厂梦!字节跳动Java高频面试题真题:一/二/三面+常见问题


目录

  • 技术一面(算法) 技术二面 技术三面 JAVA开发技术面试中可能问到的问题 面试注意点

一、字节跳动技术一面(算法)

  1. Java 的 16 进制与字符串的相互转换函数
  2. JAVA 时间格式化处理
  3. 将毫秒转化为日期
  4. 文本的倒序输出
  5. 判断一个数字是奇数还是偶数
  6. 用Hibernate 实现分页
  7. 35 选 7 彩票程序
  8. 获取 GMT8 时间
  9. 中文乱码转换
  10. 小标签
  11. Big5 字与 Unicode 的互换
  12. 取得服务器当前的各种具体时间
  13. 用半角的特殊符号代替全角的特殊符号
  14. 数组和数组之间的转换代码
  15. 从资源文件里读取值的类
  16. 一个随机类
  17. 计算传入值是否星期六
  18. 转换文件大小
  19. Java 日期格式化及其使用例子
  20. Java几个常用方法
  21. 判断字符是否属于中文
  22. 去掉字符串中重复的子字符串
  23. 将指定 byte 数组以 16 进制的形式打印到控制台
  24. 获得任意一个整数的阶乘,递归
  25. 拷贝一个目录或者文件到指定路径下
  26. 简单的 txt 转换 xml
  27. 字母排序(A-Z)(先大写,后小写)
  28. 列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤
  29. 字符串匹配的算法

二、字节跳动技术二面

  1. List和Set比较,各自的子类比较
  2. HashMap和ConcurrentHashMap的区别
  3. HashTable和ConcurrentHashMap的区别
  4. String,StringBuffer和StringBuilder的区别
  5. wait和sleep的区别
  6. JVM的内存结构
  7. 强引用,软引用和弱引用的区别
  8. 数组在内存中如何分配
  9. Spring MVC的核心是什么,请求的流程是怎么处理的,控制反转怎么实现的
  10. Mybatis如何处理结果集
  11. Java的多态表现在哪里
  12. 接口有什么用
  13. 说说http,https协议
  14. 说说tcp/ip协议族
  15. tcp五层网络协议
  16. TCP与UDP的区别
  17. cookie和session的区别,分布式环境怎么保存用户状态
  18. BIO、NIO和AIO的区别
  19. Java中常说的堆和栈,分别是什么数据结构;另外,为什么要分为堆和栈来存储数据
  20. 为什么要用线程池
  21. MySQL优化经验
  22. 悲观锁和乐观锁的区别,怎么实现
  23. 什么是线程死锁?死锁如何产生?如何避免线程死锁?
  24. notify和notifyAll区别
  25. 谈一谈对MySQL InnoDB的认识
  26. 谈一谈数据库事务的隔离级别?
  27. MySQL主备同步的基本原理
  28. 类在虚拟机中的加载过程
  29. 强引用、软引用、弱引用、虚引用与GC的关系
  30. 请写一段栈溢出、堆溢出的代码

三、字节跳动技术三面

  1. 说一下spring中Bean的作用域
  2. 说一下spring中Bean的生命周期
  3. 对Spring中依赖注入两种方式的认识
  4. Spring框架中都用到了哪些设计模式?
  5. BeanFactory 和ApplicationContext的区别
  6. 数据库的三大范式
  7. TCP和UDP的区别及其适用场景
  8. 说一下Spring的核心模块
  9. redis常用的五种数据类型
  10. 内部类和静态内部类的区别
  11. 非静态内部类中的变量和方法不能声明为静态的原因
  12. String,StringBuilder,StringBuffer的区别
  13. 集合和数组之间的相互转换
  14. 面向对象的特征有哪些方面?
  15. 概括的解释下线程的几种状态
  16. Java集合类里面基本的接口有哪些
  17. Iterator和ListIterator的区别
  18. Enumeration和Iterator的区别
  19. 介绍一下HTTP的响应结构
  20. final、finalize和finally各自的作用
  21. 说一下你了解的几种进程间的通信方式

四、JAVA开发技术面试中可能问到的问题

1. 基础知识

  • 集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList;HashSet,TreeSet); HashMap的底层实现,之后会问ConcurrentHashMap的底层实现; 如何实现HashMap顺序存储:可以参考LinkedHashMap的底层实现; HashTable和ConcurrentHashMap的区别; String,StringBuffer和StringBuilder的区别; Object的方法有哪些:比如有wait方法,为什么会有; wait和sleep的区别,必须理解; JVM的内存结构,JVM的算法; 强引用,软引用和弱引用的区别; 数组在内存中如何分配; 用过哪些设计模式,手写一个(除单例); springmvc的核心是什么,请求的流程是怎么处理的,控制反转怎么实现的; spring里面的aop的原理是什么; mybatis如何处理结果集:反射,建议看看源码; java的多态表现在哪里; 接口有什么用; 说说http,https协议; tcp/ip协议簇; osi五层网络协议; tcp,udp区别; 用过哪些加密算法:对称加密,非对称加密算法; 说说tcp三次握手,四次挥手; cookie和session的区别,分布式环境怎么保存用户状态; git,svn区别; 请写一段栈溢出、堆溢出的代码; ThreadLocal可以用来共享数据吗;

2. IO

  • bio,nio,aio的区别; nio框架:dubbo的实现原理; 京东内部的jsf是使用的什么协议通讯:可参见dubbo的协议;

3. 算法

  • java中常说的堆和栈,分别是什么数据结构;另外,为什么要分为堆和栈来存储数据。 TreeMap如何插入数据:二叉树的左旋,右旋,双旋; 一个排序之后的数组,插入数据,可以使用什么方法?答:二分法;问:时间复杂度是多少? 平衡二叉树的时间复杂度; Hash算法和二叉树算法分别什么时候用; 图的广度优先算法和深度优先算法:详见jvm中垃圾回收实现;

4. 多线程

  • 说说阻塞队列的实现:可以参考ArrayBlockingQueue的底层实现(锁和同步都行); 进程通讯的方式:消息队列,共享内存,信号量,socket通讯等; 用过并发包的哪些类; 什么地方用了多线程; Excutors可以产生哪些线程池; 为什么要用线程池; volatile关键字的用法:使多线程中的变量可见;

5. 数据库相关(MySQL)

  • MySQL优化经验: MySQL的语句优化,使用什么工具; MySQL的索引分类:B+,hash;什么情况用什么索引; MySQL的存储引擎有哪些,区别是什么; 说说事务的特性和隔离级别; 悲观锁和乐观锁的区别,怎么实现;

6. Mq

  • mq的原理是什么:有点大。。都可以说; mq如何保证实时性; mq的持久化是怎么做的;

7. Redis

  • redis和memcache的区别; 用redis做过什么; redis是如何持久化的:rdb和aof; redis集群如何同步; redis的数据添加过程是怎样的:哈希槽; redis的淘汰策略有哪些; redis有哪些数据结构;

8. Zookeeper

  • zookeeper是什么; zookeeper哪里用到; zookeeper的选主过程; zookeeper集群之间如何通讯; 你们的zookeeper的节点加密是用的什么方式; 分布式锁的实现过程;

9. Linux

  • linux常用的命令有哪些; 如何获取java进程的pid; 如何获取某个进程的网络端口号; 如何实时打印日志; 如何统计某个字符串行数;

五、面试注意点

  1. 至少定出2天的准备时间
  2. 一定得再次阅读公司的职位要求
  3. 在刷题前,先准备项目描述的说辞
  4. 一定得准备项目描述里提到的技术
  5. 一定得准备亮点话题,并想办法往这方面绕,而且亮点话题多多益善
  6. 时间多,再去刷题
  7. 面试题,通过准备让面试官感觉你软实力也行

写在最后:

冷静的思维,点亮智慧的殿堂; 抽象的理念,交汇灵感的火花; 平凡的字符,串起别样的精彩; 细腻的语言,盘活冰冷的程序; 非凡的才华,开启幸福的天地。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/291039.html

(0)
上一篇 2022年10月14日
下一篇 2022年10月14日

相关推荐

发表回复

登录后才能评论