zoukankan      html  css  js  c++  java
  • 2020年4月份字节跳动后端面试经验分享

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

    第一面

    • 远程使用牛客网进行面试
    • 面试官首先介绍说会有几轮面试
    算法题 1.1

    将整数转换二进制
    然后将负数

    算法题 1.2 买卖股票的最大利润

    给定一个数组代表股票每天的价格,请问买卖多次的情况下,最大化利润是多少?
    日期不重叠的情况下,可以买卖多次?
    输入: {100, 80, 120, 130, 70, 60, 100, 125}
    可以买卖多次: 115(80买进,130卖出;60 买进,125卖出)
    提示:不用输出买卖的序列,只需要得到最大利润

    • 时间复杂度是多少
    • 空间复杂度是多少
    判断题
    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中则看不到
    更好的答案:https://www.zhihu.com/question/28586791

    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 你还有什么要问的

    大概什么时候有结果

    • 五个工作日内答复
  • 相关阅读:
    14.使用nodejs将规定格式的txt转化为json数据
    13.resize妙用(书上看到的)
    12.写了一个怪怪的边框
    11.一起来抄一个小小的提示菜单
    UI02-textfiled.按钮 uibutton
    UI01-UIview UIlable的属性
    OC9-内存管理
    OC8-属性 KVC是键值编码
    OC7-‍ 类目,延展 协议代理。
    OC6-block-函数指针
  • 原文地址:https://www.cnblogs.com/luolianxi/p/12728357.html
Copyright © 2011-2022 走看看