去哪儿一面

1. 咖啡因(Caffeine)在多线程请求数据时,如果本地缓存未命中,内部是如何处理的?例如五个线程同时请求 id=1 的数据,Caffeine 内部会怎么做?  
2. 你们在使用 Caffeine 时,写入和失效策略是怎么配置的?  
3. RabbitMQ 是如何保证消息不丢失的?  
4. HashMap 的底层数据结构是什么?  
5. HashMap 底层为什么要额外引入红黑树?  
6. 红黑树相对于普通的平衡二叉查找树做了哪些改造?为什么选择红黑树而不是普通的平衡二叉树?  
7. HashMap 的扩容机制是怎样的?(只讲 JDK 1.8 版本)  
8. 如果初始化完后不再修改,一个线程写、十个线程读 HashMap,是否线程安全?  
9. 如果只有一个线程在读写,再增加九个线程只读,是否线程安全?  
10. ConcurrentHashMap 在实际项目中是否用过?  
11. ConcurrentHashMap 是如何统计元素数量(size)的?  
12. 线程池在实际项目中是否用过?用在哪一部分?  
13. 是否用过 Future 或 CountDownLatch 来感知线程执行结果?  
14. Future 是如何感知线程执行结果的?  
15. sleep 和 wait 有什么区别?#牛客AI配图神器#
全部评论
同学,瞅瞅我司,快消品独角兽-元气森林,校招刚开,名额有限,先到先得,我的主页最新动态,绿灯直达~
点赞 回复 分享
发布于 2025-09-29 18:04 北京
耐面王
点赞 回复 分享
发布于 2025-09-28 13:53 北京
你居然开始面试了,我写完测评还没有动静
点赞 回复 分享
发布于 2025-09-28 10:23 新加坡
佬,可以分享一下你的timeline吗
点赞 回复 分享
发布于 2025-09-26 14:30 四川
兄弟遇到正常面试官了 真好
点赞 回复 分享
发布于 2025-09-25 21:57 北京
没手撕吗佬,约二面了吗
点赞 回复 分享
发布于 2025-09-25 20:03 安徽

相关推荐

2025-12-16 16:20
门头沟学院 Java
1.实习介绍2.MySQL里面int可以定义INT(11) 也可以定义INT(5),那么它两有什么区别呢3.那既然括号里的数字,不是用来限制取值范围的那为什么要设置长度呢,我不设置行不行4.如果表中有INT(11),而插入的是100,你会看到什么样的显示效果?INT(11) 是不是就是存储11位的数字,如果你插入了一个大于99999 的数字(如100000),你认为INT(5) 会如何显示5.MySQL里面date,datetime,TIMESTAMP有什么区别,假设这个时候我要做一个跨国的系统,那么你觉得选哪个字段会更合适?为什么6.varcahr最大长度是多少能设置多少就括号里面那个数值7.唯一索引和普通索引mysql综合读写来看哪个更快8.唯一索引他是怎么做那个唯一检查的9.Doublewrite机制了解么10.mysql 的主从复制它的流程11Ok那这个时候有问题了,就是说我从库拉到了binlog之后转成Relaylog准备重放的时候,那么它的执行是单线程还是多线程?12.它怎么执行到区分不同的group去复制呢?13. 那mysql在做双主复制时,双主它会不会导致循环复制,就是a给BB又给A这种,如果会该怎么去避免这种情况呢14你基础确实掌握的挺好的,然后我来问一下你设计相关的,就像我们做系统,经常有那个菜单树的概念,比如左边有个菜单有很多层级。对吧,那现在我不设置,比如最深要求多少级,如果说让你设置一个菜单表,尽可能的少的层级也不要care他的性能的前提下,最少需要多少列?15如果我这时候又要考虑性能呢?比如说我有两个场景,第一个场景是我选择一个父节点父菜单,我能查出全部的子孙然后第二种呢,是我选一个子孙,我能查询出全部,他的父和爷爷以及所有的先祖,你觉得应该怎么设计16第二个设计题:如果我想要设计一个浏览用户的历史记录,比如说淘宝那种历史记录,我可以看我过去看到的是什么?这个浏览得有两个维度,第一个维度是以个人C端的角度去看这是我自己的历史记录,第二个角度是用供应商的角度去看这个商品被哪些人浏览了,必须要用到分库分表你决定应该怎么设计17手撕:要你设计一个单机限流组件,要求:1.线程安全,能在多线程环境下运行;2.动态自适应,能根据下游的错误率自动调节限流阈值;让系统既能保持高吞吐,又能在下游出问题时快速收敛、保护稳定性
com_whiter:这是日常的难度?
查看16道真题和解析
点赞 评论 收藏
分享
网安小厂,只有技术面HR面,岗位是Golang运开,特点是30-50%时间驻场,其他时间公司做开发。都是些小厂经典问题,比较简单。HR特别在意到岗时间,电信这边离职流程才走完30%,个还得一个月才能到岗...1.自我介绍2.在职状态3.goroutine和channel是什么,工作中怎么使用这两种东西协作的?答了基础概念、异步任务、阻塞、超时取消之类的东西4.有缓冲的channel和无缓冲的channel区别是什么?答了阻塞、缓存两种作用以及讨论了在关闭时收发的情况5.defer关键字的执行顺序?先进后出6.自定义错误处理你自己设计过吗?我在自己的开源工具包里面封装过一个,用于处理不同业务类型的错误。首先是错误接口的结构体,包含code错误码、type错误类型、msg错误信息、err原始错误,然后是New()声明错误实例,Error()返回自定义错误,NewWithType()自定义错误类型,NewWithCode(),UnWarp()拿到原始错误,Is()判断两个错误是否一致7.内存管理和垃圾回收机制答了三色标记法的原理和4个流程(初始标记、并发标记、重新标记和并行清理)以及那个流程会导致STW。答了debug.SetGCPercent设置GC频率,值越高GC频率越低,debug.SetMemoryLimit设置内存限制,用sync.pool可以复用来减少内存消耗8.Go的Map并发安全吗?若不安全怎么实现一个并发安全的Map?不安全,Go自带sync.Map是轻量级的安全的map。如果要实现可以用atomic包的原子方法或者CAS自旋锁来实现,最简单的方式是用mutex和RWMutex来进行加锁9.我看你的项目用了SOA架构,什么是SOA架构为什么这样设计?10.看你用的最多的是Fiber框架,为什么选这个框架,和Gin框架有什么区别?Fiber在25年后端框架性能排名第28,,而Gin在230名左右。Fiber使用的是类似Express.js的异步模型所以性能高,但是有致命弱点是计算密集型任务下会导致整个进程阻塞,核心优化点是在加密之类的计算密集型任务时需要开协程执行避免阻塞,但是高并发需要控制并发量避免大量goroutine使资源耗尽11.多线程任务、定时任务如何排查错误?还没上线的就打断点debug,压测工具看那一部分出问题了或者每一部分都写好单元测试保证代码质量。上线的就查时序指标图、数据库最近记录、日志,哪个定时任务的记录断了就说明问题出在这一块12.pprof你用过吗?pprof是标准库,默认开的端口是6060,go tool pprof ...就可以进行分析,也可以导出本地数据,像是Gin、Fiber这样的框架都有官方认可的pprof中间件,直接使用即可。13.自己部署过CI/CD这种流水线吗?没有,自己平时用Git,实习公司用的SVN,在实习公司也给非技术人员部署过Windows环境的SVN仓库。14.以前参加过驻场开发是吧?在深圳、广州、佛山、厦门轮流驻场过,大概10月到年底验收结束15.有了解过网安相关的开发吗?了解过一点,我平时WAF接触的多一点,封装过CorazaWAF来作为轻量***,玩过长亭雷池、1Panel、宝塔,以前会配nginx,现在能简单写一点openresty配置。用过UFW、iptables,***的原理懂一点,包括QUIC、openssl、零信任的概念16.C++了解多少?多久能上手?会调试吗?平时只用来做题没学过开发相关内容,有基础,一个月左右,大学选修课学过linux环境GDB调试不过现在忘了17.愿意走go+CPP或者go+Rust的双栈路线吗?愿意18.Docker用的比较熟练是吧?什么程度?了解过K8S,平时基本都用Docker-Compose,很少直接使用Docker启动镜像。了解过怎么构建镜像19.讲讲Docker-compose我最近做新项目有去docker-compose的仓库看过,目前最新版本v5.0.1,v3、v4版本被官方放入遗产仓库,追求稳定选择v2版本追求性能选择v5。docker-compose是一个轻量级的容器编排器,多用于单机部署,毫秒级启动,通过写好的docker-compose.yaml来定制化启动镜像,可以配置持久化目录、限制cpu和内存、健康检查等20.Docker的网络模式有几种?bridge桥接,宿主机、容器、容器间通信,有独立ip;none无网络通信,适用于离线计算之类的容器;container,容器组里面的容器可以通信;overlay,跨主机的容器通信,多用于分布式;还有个忘了(应该是host,同桥接但是无独立ip,宿主机和容器共享,多用于高性能应用)21.你做的这个开源工具包是干嘛的怎么设计的?这个开源工具包是做的SteamWebAPI的上层封装,帮助有此需求且使用Go的开发者快速接入。因为Steam官方的SDK仅提供C++版本,并且文档极其简略,根据25年一年的接入经验就做了这个。统一初始化入口,链式配置,用于初始化实例,第一层接口分为dev(接入api.steam...)、store(接入store.steam...)、crawler(爬虫)、A2S、util(相关开发工具)5个模块。每个模块都有自己的通用方法,可以请求到原始字节流,使用泛型将原始字节流转换为原始模型,原始模型到精简模型的转换,包括各种图片字段返回的后缀拼接官方目前使用的前缀的url预处理。爬虫模块二次封装gocolley,有自己独立的链式配置,默认开启自定义的退避规则、IP池轮转、User-Agent轮转、refer轮转等,提供通用爬取方法和保存本地文件的方法。A2S是封装了官方推荐的三方A2S库,该库遵循SteamA2S规则可以请求到游戏服务器的相关数据,可以用于开发查服器等工具。Util是封装了一些SteamAPI开发中大概率会用到的工具方法,包括BBCode、HTML、MD三者间的转换、令牌的获取等。此外还封装了专属的错误以及Zap日志。已实现的接口双语文档覆盖率100%22.你写的这个压缩工具是干嘛的?怎么实现的?这是我在学习Cobra CLI框架的时候原创的一个实战练习的课件。这个小工具核心功能是压缩/解压缩/加密/解密,提供zip、7Z、tar.gz三种压缩,支持批量、分卷等操作,加密支持AES、DES,其中还用到了PBKDF2秘钥派生低等技术,后续根据这个项目我还封装了一个支持MD5、PBKDF2、Argon2、Scrypt、Bcrypt五种方式加密和验证的工具包并做了基准测试,在CSDN的文章可以看到源码23.看你对redis、kafka、es都熟悉,简单讲讲es的工作原理ES对文本内容使用了分词的技术把每个词前缀提取出来通过倒排表建立倒排索引,这样可以根据搜索词快速找到对应的文章,不过我做过的项目都比较小用不到ES,我平时都使用PGSQL的向量来建立Gin倒排索引来进行查询的。24.Redis平时怎么用的?Redis有很多数据类型,Zset可以用来做排行榜,bitmap可以用来记录极大数据量的用户签到,Geo可以存储地理位置,Stream可以传输流式数据作为生产者和消费者,redis的原子性操作还可以用来做自增。但redis用的最多的还是用于缓存键值,避免流量直接打到数据库上,我用的最多的适用于存储JWT和存储网站每个模块主页面上永不过期的热点数据。25.什么时候会用到kafka?我在监控项目中使用kafka比较多,kafka主要用作于流式数据的传输和消息队列,比如采集/停止指令的下发,告警状态的推送,此外kafka最大的优势是削峰填谷,在业务高峰期存储处理不过来的请求,在业务低峰期逐步消费26.哪些GPT用的多?都怎么用的?国产豆包国外GPT,专门写代码的暂时没用过。最开始会让AI提供一些技术方案,审核后选出一套适合当前场景的,让AI搭建原始架构,我在每一个部分进行定制化修改,然后让AI再次评估漏洞我再次审核和修改,重复这个流程,经过几次迭代整个架构就基本成型了。27.看你现在是网络工程师维护做得多,平时有做开发吗?下班之后至少一半时间是在做开发,有一份开发的兼职工作。28.反问(公司业务、项目组近况)网安公司、驻场二开+运开,基本都在成都本地驻场,军工项目会封闭式开发,单次最多驻场1个月。部门刚成立,就面试官一个人,忙不过来了29.到岗时间?之前薪水?公积金比例?上周已提离职,最快2月初(可恶的电信,下辈子再去电信基层直接跳了),税后6000包吃住最高档6险2金。HR问了我几次有没有可能提前回成都,大致是过了,但是确实国企离职效率极其低下,不可抗力,暂时没有下文。
查看28道真题和解析
点赞 评论 收藏
分享
评论
13
61
分享

创作者周榜

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