小红书java社招一面面经

  1. hashmap的底层数据结构,put的过程
  1. hashmap是否是线程安全的,多线程下会有什么问题?concurrentHashMap底层是如何实现线程安全的。
  1. synchronized锁的升级过程。
  1. 数据库是否用了索引?用explain无法看出索引用了哪一部分?

https://blog.csdn.net/houmenghu/article/details/109580196

遇到非等值判断时匹配停止

a = ? and b = ? and c= ?
a = ? and b = ? and c > ?
a = ? and b > ? and c > ?, 只用到索引的一部分(a,b),因为b把数据阻断了,b不是定植时,c时无序的,无法使用(a,b,c)索引。

show global variables like 'optimizer_switch'\G

5.6版本后,可以开启索引下推。虽然有非等值条件,导致索引不能全部使用,但是可以利用索引条件,里面有的字段进行过滤,过滤后再回表读取真正的数据(extra=using index condition),而不是只根据部分索引查出该索引符合条件的数据(回表数据太多,回表一般是随机io,减少回表次数),然后再server层进行过滤,这样效率会很低(extra=using where):

extra=using index是覆盖索引
type=index,表示使用索引排序

http://fivezh.github.io/2020/01/19/mysql-icp/?utm_source=tuicool&utm_medium=referral

  1. spring循环引用的问题,A->B->A问题
  • spring对于单例模式,用了三级缓存
  • getBean(A)时,先实例化A,然后曝光到singletonFactories中,允许循环依赖。初始化结束后,再从提前曝光缓存earlySingletonObjects以及singletonFactories移除,挪到singletonOjbects单例缓存中。
  • getBean(B)依赖A,先在singletonObjects 中查找,如果有直接返回。如果不存在,在earlySingletonObjects中查找,这个是提前曝光,还未初始化的单例。如果不存在,在singletonFactories中查找,找到后放回earlySingletonObjects。这个时候A还没初始化。
  1. 举个不用回表的例子
    覆盖索引

    index (name, age)
    select name,age from t where namg = "xiaoming";
  2. 主键用uuid会有什么问题?

  1. 聚蔟索引和非聚蔟索引的区别,是否分别对应主键索引、辅助索引?是的
    https://www.jianshu.com/p/643850f684db
  • mysql索引,高度一般是3-4层,innodb的页大小是16kB,叶子节点是双向循环链表?一个b+树存储行数最多为2000w

https://zhuanlan.zhihu.com/p/86137284

  1. 实现LRUCache,这里可以考虑用map,节点是node,node之间通过前后指针关联,双向链表
    https://leetcode-cn.com/problems/lru-cache/

存在个问题,一批新数据会把访问很久的数据给挤出去,这里如何解决这个问题?

https://juejin.cn/post/6844904049263771662

https://segmentfault.com/a/1190000038714624

  1. jvm垃圾回收是如何做的?

  2. jvm运行时有哪些数据区

  3. 哈希冲突如何解决

  4. b+树叶子节点存的是指针吗?存的是数据

  1. 可重复读的情况下,select count(*) from t where a >= 0 and a <= 10在另一个事务执行前后效果如何?可重复读下,对于更新语句,会加锁。只不过是通过mvcc来实现可重复读,依然会出现幻读的现象,需要改为当前读
  1. CMS和G1均使用三色标记法进行标记,一开始是白色对象。
  • 黑色对象,自己和成员对象均已标记存活。
  • 灰色对象,中间状态,自己存活,但是成员对象未标记(白色)
  • 白色对象,未标记或者没有访问到(可以回收)
  • 跨代引用
  • 新生代引用老年代如何回收,直接扫描,因为新生代朝生暮死。
  • 老年代引用新生代,回收新生代时minorgc,使用card table,牺牲空间换时间,减少扫描整个老年代的时间,因为老年代的存活时间是比较长的。https://www.jianshu.com/p/f1ff4ab0fed7,g1引入了remember set
  1. write ahead log
  1. 延迟关联,解决深分页问题

http://qidawu.github.io/2019/11/26/mysql-deferred-join/

#面经##小红书##Java工程师##社招#
全部评论
楼主几年经验
3 回复 分享
发布于 2021-07-10 16:13
和我被问到的几乎一样,不过还是四面挂了😂
1 回复 分享
发布于 2021-07-14 08:21
校招还是?
点赞 回复 分享
发布于 2021-07-09 00:38
难度合理, 项目大概会问哪些问题啊?
点赞 回复 分享
发布于 2021-07-09 11:30
聚集索引并不一定是主键索引吧,也有可能是第一个非空索引或者rowid
点赞 回复 分享
发布于 2021-07-09 13:38
字节跳动秋招提前批来了,真海量hc,直接免笔试,提前批不影响正式批,多一次机会,欢迎大家投递 ,24小时跟进度,为你的面试保驾护航,黄金内推码: 4QS8DTU  投递链接: https://jobs.bytedance.com/campus/position?referral_code=4QS8DTU 有意者加我微信xcynice666,拉你进群哈
点赞 回复 分享
发布于 2021-07-09 21:47
我们是阿里巴巴进出口事业部,考拉海购部门吧,在招聘22届实习生
点赞 回复 分享
发布于 2021-07-13 17:39
base 哪里呀,
点赞 回复 分享
发布于 2021-11-23 18:05
兄弟你算法怎么准备的呢
点赞 回复 分享
发布于 2021-12-02 14:42
大兄弟 你的这个面试结果咋样?
点赞 回复 分享
发布于 2021-12-05 15:27
没有算法题吗
点赞 回复 分享
发布于 2021-12-09 22:13
算法问了什么呢
点赞 回复 分享
发布于 2022-07-21 00:17

相关推荐

01-02 22:35
门头沟学院 Java
社区工程一面(50min)拷打实习native层怎么调Java层函数。了解Native层和Java层内存模型的差异吗你在字节的工作?Activity的生命周期onStart和onResume的区别你怎么学安卓的了解View的绘制吗ViewGroup里面一些子View,是怎么个绘制流程如果ViewGroup自己有内容呢Layout是怎么做的点击屏幕发生的事具体场景,一个ScrollView里有个按钮,点击按住不动,向上滑动,事件分发过程是怎样的讲讲Java里的集合ArrayList忽然LinkedList的区别是什么Hash集合和Tree集合的区别是什么了解过Java中的并发吗,多线程间并发处理有哪些方法讲讲synchronized的特点讲讲volatile线程和协程的区别他们的上限有区别吗http和https的区别https握手过程算法题先增后降的数组去重并排序二面(37min)讲讲腾讯实习讲讲ClassLoader的双亲委派机制PathClassLoader和DexClassLoader的区别native怎么调javacpp的string转jstring的两种方式讲讲项目为什么用flutterDart是单线程模型,它内部是怎么做多线程并发的继续拷打实习大厂代码你有没有觉得什么很恶心的问题,你怎么看这个问题有什么治理手段吗拷打项目安卓中Binder的原理?你会不会觉得客户端能深钻的技术不多算法题(口答)n个人发糖果,相邻的人高的一定比矮的拿的多,至少要多少颗糖果编程题写一个生产者消费者模式三面(45min)你更喜欢做业务还是sdkJava中new一个String会创建几个对象抽象类和接口有什么区别final关键字有什么用cpp从源文件到可执行文件经历了什么可执行文件在操作系统怎么运行的调用一个函数,栈空间怎么变化返回值是放在哪的看你做过JNI,怎么动态和静态注册JNI?cpp的线程怎么call&nbsp;java的方法需要注意些什么安卓中遇到ui卡顿了你会怎么排查有没有用过一些工具你觉得kotlin和java比有什么优势你刚刚提到了协程,那协程是怎么实现的讲一下Handler的实现原理介绍一个你认为做的比较好的项目讲讲你在字节的工作算法题用两个栈实现队列
查看52道真题和解析
点赞 评论 收藏
分享
2024-12-25 16:42
已编辑
上海理工大学 产品经理
产品小白成长中:怎么回事吞我评论啊啊啊啊查看图片
点赞 评论 收藏
分享
评论
10
198
分享

创作者周榜

更多
牛客网
牛客企业服务