面经分享2,25春招---by小冷
上周9个面试+毕设搞得实在是有点累,回家办事正好休息了3天,接着回来学习打卡! 继上周9面,已经收到3个北京offer,都需要提前实习,且都不太满意,主要是薪资,接着投接着面!本文分享2个面经,boss和官网投递,中小厂,还是没有大厂的约我面试; 有问题的小伙伴欢迎在下面评论区讨论哈~
北京cltx golang开发 3.20 40min
应该挂了,计网答得比较差
Golang:
·go擅长做哪些事情?(语法层面、协程天生支持高并发以及调度策略gmp、可以跨环境运行) ·go里面的多线程,其中的子线程发生panic了,整个程序会退出吗?(会退出)追问:怎么去预防呢?(使用defer来退出当前panic的函数+recover捕获) ·defer的执行顺序(类似栈,先进后出) ·map是有序还是无序的?为什么这样设计?所以map没有发生变化,没有增加减少新元素的话,遍历两次都是不同的顺序对吗?(无序的,引到map扩容导致key搬迁问题上,这个思路还要在确认下) ·无缓冲channel和有缓冲channel有什么区别?(使用上和底层结构上)追问:数据竞争指的是什么情况呢? ·往关闭的chan里读和写数据分别会怎么样?无缓冲的可以读吗?外部程序如何知道chan是否是关闭的? ·你觉得go的chan设计的话,是生产者负责关闭还是消费者负责关闭?(想了半天,回答是生产者,如果是消费者关闭可能会出现生产者还没发送完数据的情况下chan就被关闭,产生panic;并且本着谁创建谁关闭的原则,更加符合代码逻辑) ·select的各个分支是怎么执行的?追问:如果是顺序执行的,第一个执行会不会导致后面的case被阻塞?(说了会唤醒chan阻塞队列里的协程来执行case,再确认下)
Redis:
·redis的常见数据结构
·想用string类型的数据做一把分布式锁,key和value分别是什么?可以举个例子;追问:加锁、解锁的命令分别是什么?set nx 中nx是什么意思?跟不+nx有什么区别?(这里没答上,没实操过)
·zeset适用场景有什么,举个例子?如何实现排行榜,比如取前十名,用什么命令?
追问:如果真是业务中,用两个相同的分数(key不同value相同),该怎么处理?(这里没答上,没实操过)
计网:
·两端进行tcp握手之后如何实现应用层协议?该怎样设计应用层协议能保持两端通讯顺畅呢? ·客户端给服务器发送数据,服务器是怎么感知客户端发送数据是发送完的,后面没有数据的? ·基于tcp协议的传输通讯了解过吗?(面试官提示:服务端主动给客户端下发消息,如果采用http就是主动轮询的方式,不断的判断服务器是不是由你收到的消息。如果采用TCP协议,服务器就会主动下发,相当于是不停的监听是否有新的数据收到、)
反问:
无反问,面试官对我应该是不太满意。
总结:这场面试暴漏出计网部分的细节问题,还有redis的实操能力。
苏州tclx golang开发 3.24 40+min
没答上来一个问题,等后续
项目:
·你个人具体做了什么(开发层面、代码层面上)?如何体现你的能力? ·接口设计具体做了什么?涉及到开发的点有哪些?http服务具体是怎么实现的? ·说一下表是怎么设计的?查询最近修改的5条消息的sql语句说一下
Golang:
·channel的底层实现(这里自己讲述的时候总是忘记通过锁来避免并发竞争) ·切片和数组的区别? ·内存泄漏是什么?自己写程序有没有遇到过?有什么影响?
计网:
·Http的报文结构是怎样的?
·http传输的是哪种数据类型怎么判断?(应答响应的信息判断)
·http和https的区别?
·tcp的四次挥手?
·SQL注入有没有了解过?(没答上)
微服务:
学过什么微服务框架(简单说了一下,感觉面试官不太满意,听了回放之后确实表述的有问题)
Redis:
分享一下你平时看的比较好的技术文章,或者自己学习的某一篇技术,分享一下 (自己说的:redis为什么是单线程,然后引到了多路复用)
其他:
职业生涯规划、到岗时间
反问:
技术上的不足给个建议(技术相关的基础知识要夯实一下,尤其是对于开发规范流程)、业务大概做什么
总结:
- 面试表现上:两个面试官一个问一个追问,而且那边的环境有点吵,期间听不清重新问的情况出现好几次,虽然都耐心重复问题了,但是感觉给面试官留的印象笨笨的;
- 技术上:项目细节没讲解好,自己介绍的时候铺垫词没解释清,以及对于个人的工作量没完全掌握好,是自己的问题。
