得物一面面经,go开发

首先自我介绍,拿一个项目讲一下,你觉得这个项目对你有什么帮助。
然后后面纯八股:
线程,进程和协程的区别
make和new的区别,能不能new一下map
讲一下gc,我就着重讲了一下三色标记法,然后问我写屏障相关的东西
能说一下负载均衡有哪些算法嘛,我只说了轮询,加权轮询和随机。
讲一下MySQL的b+树。
问了怎么解决哈希冲突
说一下slice的扩容机制
map是不是并发安全的,sync.map的底层
还问了go怎么实现高并发,讲一下channel怎么实现并发的

有些不会,感觉凉了
全部评论
挺基础的其实
点赞 回复 分享
发布于 2024-11-02 02:23 广东

相关推荐

前情提要:https://www.nowcoder.com/share/jump/1744867053616--太长不看,直接先上整理的面经# 4399 - java只有一面 ● 你为什么选择投递Java后端开发岗位?  ● Java和Go语言的优缺点是什么?  ● 你了解Go语言的协程实现吗?  ● 在Go语言中,编写协程时需要关注哪些问题?  ● Go语言中,有哪些方案可以保证并发安全?  ● Go语言中常见的原子操作有哪些?  ● Go中的sync.WaitGroup和sync.Once有什么区别?  ● 如果第三方接口返回的数据类型不确定,你会如何设计数据结构?  ● 如何处理Go语言中接口的空类型?  ● 如果你请求第三方接口时出现超时,你会如何处理?  ● 在Go语言中,如何使用Context实现请求超时?  ● Go语言中常用的ORM框架有哪些?  ● MySQL中常见的锁类型有哪些?  ● MySQL中的间隙锁是如何产生的?  ● Redis中常见的数据存储结构有哪些?  ● 如果有多个服务器需要加锁处理接口请求,你会怎么做?  ● 如何实现分布式锁?在Redis中,分布式锁会用到哪些命令?  ● 如果分布式锁没有正常释放,你会如何进行容灾处理?  ● 如果加了分布式锁后,业务长时间被阻塞,如何减少服务不可用的时间?  ● 如何监控接口响应时间并优化服务的可用性?  ● 如果你需要将代码部署到阿里云的Linux服务器上,你会如何做?  ● 如何在Windows开发环境下打包Go语言代码,并使其在Linux环境中运行?  ● 你觉得自己做的哪些项目比较有亮点?  ● 在设计单点登录系统时,遇到的核心难点是什么?  ● 为什么你选择找实习,除了零花钱,还有哪些原因?  ● 如果公司需要你学习新的编程语言,你是否有信心快速上手?  ● 你的学习规划是什么样的?  # 讯飞 - java - 消费者 只有一面  ● Golang语言的优势和劣势是什么?  ● 你之前在抖音服务端开发的项目中,团队的规模有多大?  ● 作为服务端后端负责人,你在项目中具体负责哪些工作?  ● 你是如何管理项目的节奏和设计文档的?  ● 在团队协作中,你是如何分配任务和沟通进度的?  ● 在项目中遇到过团队成员之间的认知偏差,如何处理?  ● 你在项目中遇到过哪些技术上的挑战或难题?  ● Golang语言中,内存泄漏的常见原因是什么?  ● 如何排查Golang中的内存泄漏问题?  ● Go语言的协程与传统线程有什么区别?  ● Go语言是如何实现协程之间的通信的?  ● MySQL的索引结构是什么?  ● B+树是什么样的结构,它有哪些特性?  ● 聚簇索引和非聚簇索引有什么区别?  ● 如果一个表没有主键,它还会有聚簇索引吗?  ● 如果我们在多个字段上建立联合索引,字段顺序是a、b、c,查询条件为b=... and a=...,会使用该索引吗?  ● 为什么MySQL使用MVCC来实现不同的事务隔离级别?  ● 你在项目中使用过Redis吗?  ● 使用Redis作为缓存时,如何保证缓存和底层数据的一致性?  ● 当某些数据访问频繁时,删除缓存可能会带来压力,如何优化?  ● 在高并发的场景下,如何优化旁路缓存策略?  ● 如果遇到DB和缓存不一致的情况,如何解决?  ● Redis的高性能是如何设计出来的?  ● Redis为何采用单线程模型,它的性能优势是什么?  ● 在高并发场景下使用分布式锁时,如何避免加锁带来的性能问题?# 知乎 - 监控组● 前缀树是什么?它的应用场景是什么?  ● LRU缓存是怎么实现的?  ● 你能解释一下虚拟内存吗?它解决了什么问题?  ● 如果宿主机的CPU打爆了,你如何判断哪个进程占用了最多的CPU资源?  ● 软链接和硬链接有什么区别?  ● 什么是上下文切换?一般在什么情况下会发生上下文切换?  ● 如果创建了10万线程来处理任务,会有什么问题?除了内存泄漏和性能问题,还有哪些方面会受到影响?  ● 你怎么分析慢SQL查询?  ● IP协议和ARP协议的作用分别是什么?  ● 如果带宽不是瓶颈,如何快速传输大文件?  ● Singleflight的机制是什么?  ● TCP的流量控制和拥塞控制有何不同?  ● 如何调整TCP的滑动窗口大小,以确保最大的吞吐量?  ● 常见的限流算法有哪些?漏桶算法和令牌桶算法有什么区别?  ● 雪花算法是什么?为什么你在项目中使用了它?  --面试上的反思的话,最开始也好像也没太多好说的:问题后面还是改掉了大部分只是最开始面试的话,根本就不怎么会面试虽然我也是前暑期,大二下就开始的了但是我根本没那么强的学习进化能力这是比较让人绝望的事情经历回顾的话,我的秋招是从十月末开始的那个时候已经准备从实习离职了,没转正然后其实当时,根本就没多少中大厂能过我的简历想了下后面还是详细开另一个帖子专门说我的秋招详细经历和心路,如果有人感兴趣的话这里就先打住这里只说跟面试强相关一点的事情了清楚记得第一个过我简历还是4399所以虽然面试体验不好?好像也没太不好,算一般吧。只是公司比较一般面4399的时候,更多是基础知识没答上来。一些场景分析欠佳现在想来的话,其实这些东西都能背不是只停留在对基础知识的理解,而是确实去针对针对问题的回答演练所以当时得出的一个很重要的结论是,模拟面试和刷面经很重要。想起来了,面试官迟到+只面了30min,只能说态度还行这个是实习中面的,偷感拉满当时装作去对接安卓头头离开的工位讯飞忘了是什么阶段了当时在校还找不到面试的地方在图书馆阳台面的,环境比较差整体好像回答得还行,但是也是一面就挂了算是第一个还挺想去的厂梦碎了当时应该是问得算简单,但是几个关键技术问题答得不是很完美就挂了不过说起来讯飞挺看测评的,面试的时候还问我有认真做没知乎也清楚记得,是离职前一天面的很有意思,当时馒头还说我们这边挺方便的,到处都是能面的会议室然后整体知乎算是第一次给我打上一点自信的面试体验还不错,面试官虽然没开麦,但是会充分引导你然后这场突出一个酣畅淋漓其实问题不止上面那些,是ai提取的,如果想要详细的可以私我就是问的问题都挺有难度,但是我也能答出来一些虽然最后还是不合要求给挂了
青春猪头少年不能没有offer:佬真的很优秀,加油!哥们也还在找
点赞 评论 收藏
分享
2025.4.2 下午三点开始面试,时长大约55分钟。2025.4.3 下午四点多一面挂的邮件就已经发来。本人是个菜鸡,正在为找暑期实习而努力。记录一下自己的第二场面试,也是第一个大厂面试。前面直接给我问懵了,中间有一会感觉大脑缺氧,晕晕的。面试官总体来说还行,但是我回答完问题就只是嗯,也不多说。1.自我介绍#牛客AI配图神器#2.首先问了项目是练习项目吗?回答:是学习练手项目;又问:从头开始做的吗?回答:从头开始做的。3.项目为什么选择微服务,是怎么拆分的回答:(这块没准备)只说了微服务后期好扩展,且不同微服务之间解耦。(这时候脑子已经乱了)具体如何拆分微服务的,我回答的是微服务分为对外接口层api、应用层、领域业务层、基础设施层、调用别的微服务接口的rpc层。这真是给后面埋了大雷。4.项目开发过程中的难点和亮点巴拉巴拉乱说一通,但是没忘记说项目的亮点,说了好几个项目的亮点,可能面试官不兴趣,后面就问了我说的在项目中用到了一些设计模式的亮点....5.如何和其他服务交互回答了api层封装接口、rpc层调用其他服务6.RPC基于什么实现回答:rpc是微服务中的其中一层,如果要调用其他服务的,经过 nacos 注册中心借助 Feign 可以实现调用别的微服务中的接口。。7.追问了 Feign 如何实现的回答:把项目中一个微服务调用另一个微服务的实现说了下追问:底层如何实现的回答:网络协议和数据序列化(没看过这个,随便说了俩)8.feign的协议和序列化是用的什么?直接抱歉,不会9.项目部署了吗?回答:在自己实验室电脑上的linux环境接著jenkins自动部署,只能内网访问。把jenkins部署流程简单说了一下10.你提到项目中用到了设计模式,具体如何实现的?把项目中用到的的工厂-策略模式、适配器模式都说了项目阶段回答的太烂了,就开始问八股了。11.java的哈希结构有哪些?回答:hashmap、concurrentHashMap、linkedhashmap、hashtable(直说了这些,其他的回答不上来了)12.hashmap的底层,红黑树查询和插入效率回答:基于数组、链表/红黑树实现,还说了链表转红黑树的时机;面试完回想当时好像说的是O(n),脑子想的是O(logn),说成了O(n)13.hashmap和hashtable的区别回答:hashmap不是线程安全的、hashtable是线程安全的14.hashtable线程安全怎么实现回答:使用synchronized实现15.ConcurrentHashMap实现线程安全?回答:回答了 jdk1.7和1.8分别怎么实现的16.乐观锁与悲观锁,分别的应用场景回答:乐观锁和悲观锁回答出来了,但是应用场景说反了17.synchronized和lock区别回答:说了synchronized基于jvm的监视器锁机制,巴拉巴拉;而reentrantlock使用lock显示的获取锁。18.lock和unlock底层怎么实现回答:只记得判断state的状态来获取和释放锁,具体如何不知道19.JVM的GC算法回答:最开始回答了垃圾回收器,过一会才反应过来,20.什么情况下触发GC回答:说主要是因为内存不足,然后System.gc()方法,其他的不记得了21.讲讲spring的IOC回答:控制反转,把bean交给spring管理,解耦,方便维护和测试。依赖DI实现22.依赖注入怎么实现回答:静态、实力工厂、构造器、setter方法。(注解注入忘记了,没有说)23.Spring事务注解@Transaction的底层实现回答:只说了使用AOP和事务拦截器,替代传统的编程式事务(其他的不知道了,直接抱歉)24.mysql的默认隔离级别回答:read-committed,读已提交25.read-committed是什么意思回答:回答成了一个线程只能读取其他线程已提交的数据(哎,事务说成线程了)26.其他的隔离级别以及解决了什么问题回答:回答了其他的几个隔离级别对应解决的问题27.如何实现可重复读回答:这个忘记了,随便说了一个MVCC28.MVCC如何实现回答:版本号,读取数据快照29.算法(没成功运行):单链表奇数节点递增偶数节点递减,重排后使之升序,回答一下思路。在纸上画了一下,过一会有了思路:把原链表拆分成两条链表,奇数节点链表和偶数节点链表,然后反转偶数节点链表,这时候就是合并两条有序链表。面试官让我实现一下代码写完之后,在合并代码那报空指针异常,检查了一下这个合并方法,问题不出在这,估计是前面的拆分链表的时候写错了。但是没检查出来哪里写错了。面试官说时间快到了,让我下去再看看。反问:通过这场面试,您觉得我应该往哪方面改进?面试官反问,你觉得你前面的问题哪些没答好我说了一些前面没回答好的问题面试官说要了解框架、和一些技术的底层原理,不能只会用#面经java#
点赞 评论 收藏
分享
评论
15
27
分享

创作者周榜

更多
牛客网
牛客企业服务