您的位置 首页 golang

2020 Golang字节面试经验分享

2020年4月份字节跳动后端面试经验

第一面

  • 远程使用牛客网进行面试
  • 面试官首先介绍说会有几轮面试算法题 1.1 将整数转换二进制 然后将负数
算法题 1.2 买卖股票的最大利润
  • 时间复杂度是多少
  • 空间复杂度是多少
判断题
2.1 这段代码有什么问题,如果解决
 total := 0
for i := 1; i <= 10; i++ {
    sum += i
    go func() {
        total += i
    }()
}
fmt.Printf("total:%d sum %d", total, sum)  

这段代码在协程里面执行,会造成数据不统一 可以使用加锁避免

  • 怎么样加锁?代码实现一下 代码如下: var lo sync.Mutex func main() { total := 0 for i := 1; i <= 10; i++ { nums += i lo.Lock() go func() { total += i lo.Unlock() }() } fmt.Printf(“total:%d”, total) }
  • 还有其他问题吗
3 其他考核
3.1HTTP状态码

400 500状态码

HTTP报文格式

不清楚··· 解:

3.2HTTP请求方式

GET获取 POST创建 PUT修改 DELETE删除

  • get post有什么区别 个人主要说了get相对没有post安全,所有的参数都放在URL上面,post会把参数包装成一个请求体
  • 抓包post和get有什么区别 url中会附带GET请求的一些参数,抓包都能看见,都是明文传输,而POST的在url中则看不到 更好的答案:
4 数据库
4.1 mysql事务

事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务 定时任务

  • 隔离级别有哪几种 ~
4.2 MySQL数据库索引是如何实现的?

使用的B+树实现的 因为B+树和跳表有点相似,可以直接查找下一级

  • 为什么不用其他的数据结构? 因为如果数据量特别大的时候,大数据量查找会影响性能,B+树恰好解决了这个问题
4.3这段数据库应该怎么加索引速度最快
 select * from table_name where c> 10 and a = 10 and b = 10;  

首先我们应该优化只查询的值,可以把*改为需要查询的key 因为c是动态的,可以根据a和b加联合索引,达到速度最优

5 项目相关
项目中的爬虫你用到了什么框架
  • 框架有什么用
  • 高并发怎么做的,有微服务吗
  • 如果要做分布式的,怎么实现 用kafka实现,抓取数据统一使用kafka进行消费
  • 存入哪些信息 存入列表
  • 你们没有做查找功能吗 没有,如果有这个需求可以存储到ES,使用es进行查找
6 你还有什么要问的

大概什么时候有结果

  • 五个工作日内答复

文章来源:智云一二三科技

文章标题:2020 Golang字节面试经验分享

文章地址:https://www.zhihuclub.com/86821.shtml

关于作者: 智云科技

热门文章

网站地图