清能互联 一面

base南京  Java后端实习

(这个公司真的好,但是感觉是悬了。拷打了50分钟,面试官最后原本想说周一,也就是下一个工作日,结果后面说一周。可能是要排序,也可能已经婉拒了呜呜呜)

一面:
自我介绍
讲一下你的第一个项目吧,用到了什么中间件?
讲一下你对微服务的了解
nacos它服务拉取,会拉哪些参数?
nacos怎么保证一个服务没有宕机?
心跳机制的服务移除,是马上移除吗?
二阶段提交讲一下
seata的全局事务注解是什么?
如果有一个用户,消息接收失败了,应该怎么办?
你做项目遇到了哪些难点?怎么解决的?
有状态和无状态讲一下
你用的什么数据库?
索引分类有哪些?
你为什么要用threadlocal?
我创建了一个异步的线程,那threadlocal里的数据怎么办?
分布式锁和CAS你是怎么用的?
你的redis挂掉了怎么办?
全挂掉了怎么办?
为什么要设置缓存空值?
为什么要设置随机过期时间?
你的分布式锁的key是怎么设置的?
超选可以给出业务层面的解决办法吗?
你讲一下订单超时的回滚怎么做的
死信队列是什么?
聊点java基础吧
Spring的bean是怎么注入的?
AOP了解过吗?
hashmap和ConcurrentHashMap有什么区别?
map的key可以设置为空值吗?
AQS有了解吗?里面有哪些锁?
讲一下重入锁吧
线程池了解过吗?有哪些参数?
我有三个异步的线程,怎么把他们同步在一条水平线上?
讲一下CAS的思想

反问:
您对我今天面试的表现感觉怎么样?(挺好的,可以)
您可以给我一些建议吗?(多做一些项目)
我需要去深入研究ai吗?
我可以了解一下公司的业务吗?(电力能源,和电网合作)
如果我有幸入职,我会接触到什么业务呢?(写一些简单的业务,学习我们的项目)
我的面试结果会在什么时候通知我呢?(今天周五,应该是下周(一)……一周)
#面经# #牛客AI配图神器#
全部评论
能进清能,我给牛油们包大红包
3 回复 分享
发布于 06-20 16:31 湖北
强度有点大
1 回复 分享
发布于 06-22 15:27 北京
mark面经
点赞 回复 分享
发布于 07-05 17:16 上海
这个好难啊我去
点赞 回复 分享
发布于 07-04 11:36 江苏
mark一下
点赞 回复 分享
发布于 06-25 10:09 安徽
那这个Redis全挂了该怎么办
点赞 回复 分享
发布于 06-24 15:59 重庆
mark面经
点赞 回复 分享
发布于 06-23 15:59 北京
在哪投的
点赞 回复 分享
发布于 06-21 11:49 江苏

相关推荐

1. 个人介绍2. 实习经历3. 开源经历的项目介绍和个人贡献4. 实习期间项目背景、系统架构、主要技术栈及负责的功能模块7. 常用数据库(MySQL、MongoDB、PostgreSQL等)及使用场景8. select id,name,balance from account where update_time > '2020-09-19' offset 100000 limit 10;8.1 该 SQL 语句做什么事情?8.2 在 update_time 列上加上普通索引,请从数据库引擎层面解释这条SQL的查询过程是怎样的?8.3 在 update_time 这个列对应的索引中,它的叶子节点存的是什么数据?叶子节点会存储整行的所有数据吗?8.4 基于以上过程,这条 SQL 是不是需要执行两次数据库 IO 操作?8.5 原 SQL 加上 for update 的执行语义和执行效果。9. Redis9.1 Redis 常用的数据类型有哪些?String、Set、ZSet 分别适合什么场景?9.2 Redis 的 ZSet 底层是怎么实现的?9.3 跳表的特点是什么?索引是怎么生成的?9.4 Redis 是怎么删除过期键的?9.5 实习期间项目里 Redis 存了什么数据?缓存策略怎么做的?10. Nacos 在项目中怎么用?它的配置更新和服务交互机制是怎样的?11. Kafka11.1 核心组件和概念有哪些?Producer:消息生产者;Consumer:消息消费者;Broker:Kafka 服务器节点;Topic:消息分类主题;Partition:主题的分片,保证单分区内消息有序;Replica:分区副本,保证高可用。11.2 Kafka 消费者组 Rebalance 是什么?11.3 Kafka 是否支持 Exactly Once?会不会丢数据?11.4 Kafka 分区副本是怎么同步的?11.5 Raft 和 Paxos 算法是做什么的?区别是什么?12. 从磁盘把数据加载到内存,操作系统是怎么做的?涉及哪些机制?13. 目前在实习的项目中做了什么?项目背景和流程是什么?14. 给出并解释程序运行结果14.1 程序 Apackage mainimport "fmt"func main() {b := []int{1, 2, 3, 4, 5, 6}c := b[1:3]c[1] = 999fmt.Println(c)fmt.Println(b)}14.2 程序 Bpackage mainimport "fmt"func Append(s []int) {s = append(s, 5)}func Add(s []int) {for i := range s {s[i] = s[i] + 5}}func main() {s := []int{1, 2, 3, 4}Append(s)fmt.Println(s)Add(s)fmt.Println(s)}15. 题目一(leetcode 102. 二叉树的层序遍历)16. 题目二:现在有一个 DelayQueue 结构体,你需要实现它,使它具备延时队列的功能。// DelayQueue 延时队列type DelayQueue struct {}func NewDelayQueue() *DelayQueue {return nil}// Put 将元素放入延时队列func (dq *DelayQueue) Put(value any, delay time.Duration) {}// Get 从延时队列中获取元素,如果当前没有元素,或者元素还没有到期,则阻塞func (dq *DelayQueue) Get() any {return nil}func main() {dq := NewDelayQueue()dq.Put("World", 3*time.Second)dq.Put("Hello", 1*time.Second)// prints "Hello" 1s later// prints "World" 2s laterfor i := 0; i < 2; i++ {println(dq.Get().(string))}}具体要求:1. 调用 Put(value, delay) 时,把一个元素放入队列,并指定它在 delay 时间之后才可被取出。2. 调用 Get() 时,如果当前没有可取的元素(队列为空,或最早的元素还没到时间),则需要阻塞,直到有元素可取为止。多个元素可能有不同的延迟时间,Get() 必须按到期时间的先后顺序依次返回。比如:dq.Put("World", 3*time.Second)dq.Put("Hello", 1*time.Second)运行时应在 1 秒后打印 "Hello",再过 2 秒打印 "World"。3. 要求支持多个 goroutine 并发调用 Put() 和 Get(),不能发生数据竞争。4. 希望实现效率较高,比如 Get() 查找下一个到期元素的时间复杂度尽量低(提示:可以考虑最小堆或优先队列)。你需要在现有的 DelayQueue 代码基础上补全 NewDelayQueue()、Put() 和 Get() 方法,实现上述功能。请你先讲一讲你的设计思路,然后写出代码。
查看27道真题和解析
点赞 评论 收藏
分享
评论
19
43
分享

创作者周榜

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