2021四月实习部分面经

这篇博客记录了作者在京东、美团、字节跳动和度小满等公司的面试经历,主要涉及Java基础、数据库设计、并发控制和锁机制等方面。面试中讨论了MySQL的锁类型、数据库表设计、哈希和B+树索引、并发问题解决方案如分布式锁,以及Spring框架的@Autowired机制。面试还涵盖了垃圾回收算法、线程安全、JVM内存模型和Java集合框架的实现细节。
摘要由CSDN通过智能技术生成

只记录一些我觉得有必要复盘的,认真听了录音在记事本中记录的。
一些二面的可能聊人生包括后面面试感觉问的问题太简单的,就没有记录。

2021-3-30 京东电话面-笔记

很吵,,,很突然。。。。

1、介绍一下商城项目
这一部分要在通顺一些。
2、MySQL的锁
3、设计数据库表,考虑那些方面?
4、数据库的索引有什么作用?
5、用什么算法实现数据结构?
6、B+树查询的时间复杂度?
7、除了B+树之外还有没有别的实现结构?—哈希索引、全文索引
8、哈希的查询时间复杂度
9、为什么使用B+实现,用哈希的不多?
10、Hashmap和HashTable的区别?
11、线程安全通过什么方式保证?
12、出现哈希冲突的时候有哪几种解决方式?
13、出现很多冲突的时候?
14、红黑树有了解嘛?
15、volatile关键字作用?
16、垃圾回收算法都有哪些?
17、多线程适用于什么场景?
18、TCP有几层。–
19、TCP协议怎么防止拥塞?
20、什么是死锁,怎么避免死锁发生?
21、spring框架autowired关键字什么作用?基于什么机制实现的?

2021-4-10 美团一面

自我介绍需要修改更流畅
MySQL数据库数据源部分
分库分表-数据库各表这个怎么设计的
分页查询
并发出现什么问题。。分布式锁,插入数据。。行锁。。商品详情页查询。。随机数生成uuid。。
为什么查询需要分布式锁?

缓存,为什么查询需要锁
随机字符串做一个锁,设置一个时长
缓存数据的格式k-v

并发的时候都
自旋

新建商品 怎么去同步缓存。缓存不一致。

线程间通知。。这里想引到volatile。。
加锁不对hhh

加商品。rpc。检查,有就修改,没有才新建。

行锁表锁–两种粒度–
如果想使用表锁怎么办innodb

聚簇索引,非聚簇索引。
B树和B+树的区别。

索引值和data值在一起。

一个表的索引字段比较多,会怎么样。

索引优化。
最左前列这个解释一下。

可重入锁。这里讲一下synchronized锁
这里我直接讲reentrantlock去了。不知道对不对。

怎么控制只有一个线程能拿到这个锁。
aqs 底层说了一下。
cas

aba问题。怎么处理,原子引用类。

怎么去实现这个可重入的自增自减。保证是自己的。

挂起唤醒。aqs怎么挂起唤醒。

threadlocal
内存泄露问题
底层。key是弱引用。
四种引用方式。
软引用怎么定义内存不够–新生代还是老年代的内存。

都换成弱引用的话为什么不行。

为什么threadlocal每次用完还要remove 等着垃圾回收不行吗

2021-4-19 字节一面

项目回答的太差…

dubbo实现
这个不能。笑啊这里
注册中心,监控中心,消费者,

限流算法
漏桶算法,令牌桶算法
二者区别
应用。。。。。不能说没应用啊。。。

hashmap底层结构
扩容的过程……说的太乱了,又少又乱

concurrenthashmap实现
锁的粒度
hashtable和concurrenthashmap的区别……说慢些就好了

NIO和BIO的区别
非阻塞怎么实现,,,这里轮询啊。。。

MySQL数据库的四种隔离级别
串行化
可重复读
幻读是什么…但是这是…语气词太多了
MySQL怎么实现可重复读
mvcc。怎么实现可重复读。。
。。。。。这里整理的不好。。。。。

索引能否命中。
为什么要说口诀。。。跟他讲原理。
explain关键字 key

2021-4-25 度小满一面&二面

度小满一面:

Java基础数据类型
float占了几个字节
包装类
接口和抽象类的区别
接口的使用
设计模式
double check单例模式两次check
去掉第一个check行不行

synchonized的使用
两个线程并行synchronized
synchronized的底层实现及优化
synchronized和lock的区别

hashmap底层
put的过程
判断一个key是否相等
为什么是2的倍数
多线程操作出现什么问题

线程安全的hashmap
concurrenthashmap底层实现

线程池的七个参数
四种饱和拒绝策略

往线程池中添加任务的过程
怎么判断线程池中任务是否执行完成

新生代1:1:8分区
为什么1:1:8

引用计数算法,可达性分析算法
可作为GcRoots的四种类型

MySQL中b+树的优点
最左前缀原则
能不能命中索引abc

度小满二面:

面向对象
继承和接口的实现
多重继承出现的问题

concurrenthashmap解决并发问题
synchronized关键字的底层
锁升级的过程
CAS Unsafe类
volatile关键字
不能保证复合操作的原子性i++

线程池
executor
三种thread pool
线程池的关键参数
工作队列中加入任务
四种饱和拒绝策略

spring
ioc
aop
动态代理
spring容器
生命周期?流程

虚拟机内存模型
堆 新生代 老年代
为什么是1:1:8,小了,大了行不行
三种垃圾回收算法
怎么判断对象是不是可以被回收
两种垃圾判断方法
gcroots
为什么这四种可以作为gc roots

单例模式
静态内部类实现 延迟初始化 线程安全

消息队列在项目中的使用 用处
elasticsearch的应用 为什么用

自己的优势

2021-4-27 快手一面

介绍项目
登录模块 拦截 认证中心
序列化 为什么序列化

异常 error exception
可预测异常,不可预测异常
try catch 不能说忘了是啥啊。。。。

Java内存区域
元数据区取代了永久代
元数据区存储什么

垃圾回收
垃圾判断算法gcroots
垃圾回收算法
hotspot 1:1:8 分代收集
内存优化的方法

young区域有一个垃圾强引用老年代,但是老年代那个是个垃圾,能被回收吗

volatile关键字
内存可见性……某一个对象的属性发生了变化,可见吗

项目:
过了一段时间没支付,怎么释放
只是提交了订单,但是没支付,怎么处理
做个延时处理
谁来操作

笛卡尔积的题。。。。没撕出来。。

2021- 阿里一面

有收获…面试官很不错…但是一道多线程编程的问题没有做出来,还是需要学习
然后,问题都是有包装的,不会很直接地问你问题
不该笑…应该正经的,端正态度…

项目使用了什么技术,分成了哪些模块,怎么去完成开发
ZK和dubbo
有没有在多台机器上进行部署
小的集群
dubbo–RPC框架—实际的应用场景–这里需要再准备一下
使用dubbo框架能解决什么问题,带来什么样的好处。
面试过程中的笑声要杜绝。
SOA架构

商品详情模块,订单模块
哪个模块使用到的技术栈最多。怎么去进行开发的
缓存怎么实现的–redis
redis怎么解决并发问题
redis读取数据的方式–单线程多路IO复用
多路IO复用好在什么地方
优缺点
解决了什么问题

数据库索引
索引的数据结构–这块回答的逻辑不太好,感觉想问B+树
每一列都建立一个索引,会出现什么问题
插入数据,是不是也要建立对应的索引。
索引太多,写入和更新数据的也会效率比较低

性别索引,—没有帮助,区分度不高
MySQL的幻读
怎么解决幻读问题呢
explain
无法用到索引的情况。

集合的源码
hashmap的数据结构
头插法尾插法,红黑树
concurrenthashmap的怎么实现线程安全
synchronized和lock的区别

面试官说除了你准备的这些,最近看什么技术类的书籍
多线程编程的题目:

//评测题目
class HelloWorld {

  public void hello(int n) {
  	// @todo
    for(int i = 0 ; i <= n ; i++){
    	System.out.print("Hello");
    }
  }

  public void world(int n) {
  	// @todo
	for(int i = 0 ; i <= n ; i++){
    	System.out.println("World");

    }
  }
}

两个不同的线程将会共用一个 HelloWorld 实例。其中一个线程将会调用 hello() 方法,另一个线程将会调用 world() 方法,请设计修改程序,以确保 "HelloWorld" 被输出 n 次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值