校招 未知部门 / 后端-Go / 一面

[面试日期] 2024-07-16 [面试时长] 未知
[学校背景] 河南科技学院 | 双非 [学历背景] 未知
[发布人] 面试之星官方收录
<h2>得物 - Go社招一面 - base长沙 - 7.10</h2> <p><img alt="alt" src="https://uploadfiles.nowcoder.com/images/20240716/621876812_1721145462066/D2B5CA33BD970F64A6301FA75AE2EB22"></p> <ol> <li>简单介绍一下中台系统</li> <li>挑其中一个参与比较多的,有成就感的,有挑战的一个项目,重点描述一下这个项目的业务背景,技术架构,以及我在里面的一个角色</li> <li>广告投放完之后,用户点击了广告,你们去抓取数据,为什么要抓取数据呢?你们是广告主,是付了钱的,抖音,快手,广点通他们会把数据按照你们配置的点击链接回传给你。</li> <li>项目中遇到过的最大挑战是什么,怎么解决的</li> <li>go <ol> <li>遍历一个map的时候,连续遍历多次,中间没有其他代码,顺序相同的吗?</li> <li>为什么顺序不同的</li> <li>可以对map里面的一个元素取地址吗</li> <li>go里面的内存逃逸</li> <li>发生内存逃逸的例子</li> <li>堆栈有什么区别</li> <li>go里面select用在什么地方</li> </ol> </li> <li>grpc <ol> <li>http2的优缺点</li> </ol> </li> <li>团队怎么分工的,有版本的概念吗,需求谁提的呢,怎么看待这个分工的问题呢</li> <li>代码及场景</li> </ol> <pre><code>func main() { panic(&quot;xxx&quot;) recover() } </code></pre> <p>一、上面的panic会被捕获吗 给出修改代码</p> <pre><code>func main() { defer func() { if r := recover(); r != nil { fmt.Println(&quot;Recovered from panic:&quot;, r) } }() panic(&quot;xxx&quot;) fmt.Println(&quot;This line will not be executed.&quot;) } </code></pre> <p>二、以下代码输出什么</p> <pre><code>func f() { defer fmt.Println(&quot;D&quot;) fmt.Println(&quot;F&quot;) } func main() { defer fmt.Println(&quot;N&quot;) f() fmt.Println(&quot;M&quot;) } </code></pre> <p>三、 select * from tableA where a = 1; 有一个表 ,里面有一个字段 a(建了一个单字段索引),假如分析发现这个 sql没有走命中这个索引a走的全表扫码,分析一下原因。</p> <ul> <li>为什么当a=1比较多的时候,走全表而不走索引呢?</li> <li>对于非常小的表,数据库可能会选择全表扫描,为什么?</li> <li>除了表比较小,重复值多区分度低,还有其他可能吗?(隐式类型转换 )</li> </ul> <p>四、假如有一个库(已经出现性能瓶颈了),库里面有10张表,其中两张表想迁出来,迁到一个独立的数据库里面,有什么思路。</p> <ul> <li>导出数据,再导入数据,再去更新代码中的数据库连接,中间这个过程中写在老库的数据就没有导入过来,不能暂停对老表的写操作。</li> <li>定期增量备份,会有问题,定时跑的就会有定时的时间差。不管是定时备份也好还是手动导出导入也好,都不是原子性操作,就会有时间差,有数据漏损。</li> </ul><a>#得物#</a><a>#Golang社招#</a><a>#社招#</a><a>#一面凉经#</a><a>#go#</a>
AI 推荐面试题