【Shopee】Golang岗-攒人品的面经

(虾皮的面试系统是白板,acm模式,需要自己写包,import,方法,输入输出)

一面:

1 linux移动文件夹和文件夹的所有稳健,命令是啥
2 linux查内存,查cpu命令
3 虚拟内存是怎么用的,优点是什么
4 线程和进程的区别(那协程的区别呢?协程为什么快,怎么理解协程,协程的轻量级是哪里轻)
5 go 主协程等待子协程执行完毕再执行,有哪些方法
6 http和https的区别
7 https的加密过程
8 hashmap的原理,怎么实现的(go里的map),哈希冲突的解决方法是什么,拉链过大怎么办
9 数据库索引的聚簇索引和非聚簇索引的区别
10 索引的存储方式(存储结构)
11 索引的优点和缺点
12 go的调度模型了解吗,讲一下
13 go的gc垃圾回收,是咋样的。不同版本有没有什么演进呢
14 go之间的线程同步是怎么做的 go的sync包都有什么东西
应该还有一些go的问题,想不起来了

算法
一个数组nums,一个target,在数组中寻找target,如果数组中存在,则返回target的下标。若数组中不存在,则返回target应该插入位置的下标

(一开始想用二分,但是面试官反复强调没有那么难,就用了从头到尾的遍历,然后判断逻辑,找位置,面试官一直说我写的逻辑太复杂(判断分支过多),让我优化,优化了15分钟,没有优化到最优,面试结束坐电梯就想到了。。。)

二面:

自我介绍完了,
来个算法(吓得一激灵)

一个可重复的乱序数组,一个target,求出这个数组中有多少对不重复的数组对之和等于target
比如 1 3 -5 1 -7 target = -4
有 (1,-5) (3,-7)两个数对

先说思路: 第一思路,排序,双指针,时间复杂度 nlogn + n
还能不能优化 用map(后来一看,这不是leetcode 两数之和吗),一个存正常的,一个存重复的,判断一下即可

开写,XXX(2分钟),自己来个用例,ok

以下都是实习和项目

中间夹杂的:
sql的优化,bug的解决方法
redis是做什么用的,你觉得它有多少qps。

聊人生

求hr面

8.2
已经收到hr面了

求过

求oc