java-软件开发-19届双非-华OD面经

od面经 bg:双非非目标,非科班转行,经验3+,java开发 3.31 收到机考链接 4.2 完成机考,机考分数320 4.3 性格测试 4.8 hr面,问了40多分钟,没通过,换部门

第一次HR面问的问题: 每份工作的离职原因 项目有哪些困难,怎么解决 项目人员配置 都跟哪些人员协作,过程中有哪些困难 为什么选择华为 对这个岗位认知 职业规划 家庭情况 期望薪资 4.14 HR面,随便问了几句,三五分钟,未通过,换部门 4.16 HR面,问了离职原因,怎么转行的,在找哪里的工作,最后通过,让准备技术面 4.22 技术一面 1.知道哪些线程安全的集合,都是怎么保证线程安全的 2.项目中怎么用多线程的? 3.int(1),这个1代表什么?定义一个123,能插入吗? 4.在生产环境,一直有业务的场景下,怎么在大数据表加两个字段,应该注意什么 5.服务发现用的什么?怎么设计一个nacos 6.怎么解决redis穿透? 7.项目为什么要用rocketMQ,而不是rabiitMQ,Kafka这些? 8.设计模式知道哪些?观察者模式使用场景?具体在项目中用过什么设计模式? 9.线程的创建方式 10.callable和runnable区别 11.最优雅的停止一个线程的方式 12.项目中redis怎么用的 13.项目中MQ怎么用的 14.什么时候会发生fullGC 15.JVM调优怎么做 手撕:力扣463岛屿的周长,面试官投屏 4.25 技术二面 先手撕:力扣200,岛屿的数量,直接打开力扣链接,代码有小细节没注意到,没撕出来,说了思路 1.项目中怎么使用多线程的,有哪些锁竞争的场景 2.项目中做过哪些sql优化,使用了哪些索引,怎么合理创建索引的 3.项目中用了哪些设计模式,怎么用的 4.单例模式是怎么保证线程安全的或者说单例模式有哪几种形式,都有什么特点 5.回忆机考题,说说怎么做的【这个也是很常见的一个问题,如果答不上来 面试官会觉得是不是作弊】 其他的问题想不起来了 4.28 主管面 1.介绍下最近的或者最熟悉的项目 2.简历中的项目都问了下,做了哪些功能 3.预估自己在每个项目的代码量(实在不知道咋答,确实也没想过) 4.之前在哪,愿不愿意去东莞 还有些忘了,面的一般,以为过不了,后面又打电话沟通意向,介绍项目,项目遇到的困难,怎么解决的, 愿不愿意去东莞的意向,愿不愿意做鸿蒙或者APP开发 4.30 定薪(当时有别的面试通过了,也在谈薪,所以定薪催的比较快,薪资涨幅不大) 5.13 下发offer,定薪后一周多下的offer,中间隔了五一 5.22 入职

华OD面经 文章被收录于专栏

首先介绍下正常情况下的流程,机试➕综测测试➕确定具体部门后资格面➕技术一面➕技术二面➕主管面➕谈薪资和等审批 该专栏是已经入职的同学分享的经验贴,希望可以对大家有帮助

全部评论
哥,你的JVM调优怎么答的啊?我只会arthas看面板,都不敢写这些在简历上,听说得三年+经验才可以写
1 回复 分享
发布于 07-13 00:05 四川

相关推荐

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道真题和解析
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

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