小红书PE后端一面

1. 自我介绍
2. 线程池有哪些常见参数
3. RPC 调用情况下你会使用怎么配置线程池?
  1. IO 密集型任务线程大多时间是在等待外部资源响应,此时线程处于空闲状态,CPU 利用率较低,可以设置较大线程数
  2. CPU 密集型任务,例如浮点计算等,很少会有阻塞情况,此时线程数多会造成上下文切换频繁影响性能能
4. ConcurrentHashMap 底层的读写是怎么处理并发冲突的
  1. 读:将 value 和 链表 next 指针设置为 volatile,多线程修改 volatile 变量时不会使用自己的副本,是修改公共内存中的变量,每个线程都可以取到最新的数据,读的时候不需要加锁
  2. 写:首先判断有无冲突,如果没有冲突的话直接 CAS 插入即可,如果有冲突的话就 synchronized 锁住头节点遍历链表进行插入
  3. 扩容:ConcurrentHashMap 的扩容也是并发安全的,且支持多线程协同扩容。扩容时,会将原数组的桶迁移到新数组(容量翻倍)。多个线程可以同时参与数据迁移工作。系统会将任务拆分成一个个小的“区域”(TransferRegion),线程领取任务后进行迁移。在扩容期间,读操作依然可以正常进行(可能会读到旧数据或新数据,但最终一致性有保障),写操作则会协助扩容或等待。
5. Synchronized 和 ReentrantLock 两种锁的选择
  1. Synchronized 关键字:使用方式简单,可以加在代码块和代码上,只能实现非公平锁,多线程来了之后谁抢到谁执行,而不是排队。JDK 1.6 引入了偏向锁和锁升级机制提高了性能,性能和 ReentrantLock 相差不大。底层通过 Java 对象头中的 Mark Word 标记字实现,标记字中有 2 比特记录当前锁状态,
    1. 无锁状态记录 hash 值和 GC 年龄
    2. 偏向锁状态记录当前线程 ID,当第一个线程来时记录
    3. 轻量级锁,记录持有锁的线程的锁记录,每一个线程都有自己的锁记录,第二个线程来时转为轻量级锁;
    4. 重量级锁:记录堆中的 ObjectMonitor 对象指针,这个对象有一个队列存储没有获取锁的线程进行排队,当线程执行完毕后会唤醒队列中的线程竞争锁
  2. ReentrantLock:通过 AQS 抽象队列同步器实现,底层有一个 state 记录冲入次数、一个先进先出 FIFO 的 DLQ 双向链式队列记录排队线程,公平锁先查看队列再竞争锁,非公平锁先尝试获取锁操作失败才入队列等待。
6. Redis 为什么快
7. Redis 大 key 怎么解决
8. Hive2CK 导入数据是直接 CK 导入还是使用中间件
9. ClickHouse 和 MySQL 底层有什么区别
10. ClickHouse 主要的使用场景在哪里
11. ClickHouse 并发支持如何
12. ClickHouse 物化视图是什么
13. Agent 项目用户转人工拦截率这个数据口径是怎么统计的,有没有遇到过用户找不到人工 Oncall 入口而投诉的
14. 讲述一下你的冷热分层项目
15. 你这个 OOM 问题是怎么排查的,最后怎么解决的(OkHttpClient 没单例且没指定线程池导致的 OOM)
16. Kafka LAG 一般怎么排查(从提交消息消费成功出排查,查看是线程挂掉了还是处理该消息耗时太长导致 LAG
17. 算法题:翻转01字符串 k 次,找到翻转后最长相同串(eg: 10101 k=1, res=3, 翻转一个0得到111, 翻转一个1得到000 #面试问题记录##我的求职进度条##求offer##牛客AI配图神器#
全部评论
是因为楼主简历有clickhouse这些吗
点赞 回复 分享
发布于 06-03 13:24 湖北

相关推荐

项目拷打: 1.为什么要将基于DDD拆分为这几个领域?2.每个领域各自解决什么问题3.知道什么是聚合根吗4.DDD给你项目里面,带来的收益是什么5.DDD有什么缺点PS:DDD这一块答得不太好,感觉有些问题过于抽象以下都是项目细节拷打,便不做展示八股:1.hashmap为什么是线程不安全的2.线程池的核心参数3.为什么不建议直接用Excutors创建线程池4.b+树为什么适合做数据库的索引5.什么是覆盖索引6.redis为什么快7.Spring容器里面的Bean是单例还是多例8.怎么判断一个单例Bean是否是线程安全的注:这里我回答的是如果Bean里面存在共享变量,并且多个线程都可以对他进行修改,就不是安全的,大概率不是面试官想要的,因为它一直再追问。9.怎么去解决单例Bean的线程不安全吗,通过加synchronized吗?注:我答得是可以换成多例,然后单例的话,我实在没想出来,就说的可以配合除了synchronized,reentrantlock也可以实现,感觉应该不是面试官想要的10.平时经常使用ai编程吗11.怎么看ai编程能力,越来越强12.什么时候开始接触ai编程算法:一个二维数组,里面是每个会议的开始和结束时间,问至少需要多少个会议室PS:对于DDD这部分答得不是太好,然后再第二天也是挂了,不知道是不是因为我是28届的,然后因为这个岗位是暑期实习将我筛选掉了,当然很大可能也是自己的能力问题,幸运的是,当天挂了之后,另一个日常实习的部门捞了我,而且和我的学校再同一个城市,好好准备,希望能结束这段时间的焦虑和紧张。
查看17道真题和解析
点赞 评论 收藏
分享
评论
4
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务