字节跳动后端开发实习生面试

每次约1个小时,先问大量基础知识和系统设计方面的问题,然后做再做两道算法题。做算法题的时候面试官经常会提醒,会给一些思路,所以题目方面的难度并不大。整体来说,题目做得比较顺利,但是基础知识和系统设计方面答得不好。

面试时间:2020.02.13 - 2020.02.14

一面

问了一些基础知识(比如python的GIL,http 状态码,TCP和UDP的区别,TCP拥塞控制,restful),还有一些项目上的问题,然后做题

  • 第一题:只使用加减乘除等基本运算实现正整数的开方(二分)
  • 第二题:有N个台阶,每次只能走一步或两步,先走完全部台阶为获胜,有两个人甲和乙,甲先走,判断在什么情况下甲一定会先到。

    第二题有点古怪,在理解题目时花了好长时间,最后我发现这不就是个判断奇偶数的问题吗,如果为奇数甲一定获胜,否则不一定...但是这个题也太简单了,面试官似乎不是这么想的,他说他想要的是让我从程序上进行证明,但是我给他从数学上讲通了,也行吧...

二面

先问知识点,虽然我投的是后端开发,但是面试官对我机器学习的经历很感兴趣,所以问了蛮多机器学习上的知识:

  • 全连接的缺点(过拟合)
  • 如何解决过拟合(调整数据、全连接时随机dropOut、L2正则)
  • 解释L2正则 (忘了)
  • 如何解决长尾分布的数据 (勉强记得一个focus loss)

后面答得不好,面试官然后就开始问系统上的,

  • 爬虫,爬很多的数据,如何去重?

所有的URL放redis set里,自动去重

  • 如果url很长、很多呢?

Hash一下,把url都映射到相同长度

  • 如果数据有很多,Redis放不下呢?

上Redis集群

  • 如果还是放不下呢?

记每条数据存储时的时间戳,把时间戳较老的数据移动到硬盘上。

还有一些基础知识,比如python是如何实现动态类型的,Java的强弱引用,Redis底层是怎么存储数据的,Redis 有序集合的原理,是否了解RPC

开始做题

  • 1.从一个二维的字符串数组中,匹配一个小字符串,每次可以从上下左右匹配,但是不能超出数组范围

参考leetcode: 单词搜索(middle)

典型的回溯题,写得很顺利,写完之后面试官提醒了几处bug,然后问面试官要不要跑一下,他说不用了,他看了没问题,直接开始下一个

  • 2.给定一条长度为N的绳子,切绳子,求如何切使得每段绳子的长度的乘集最大

参考leetcode 剪绳子(middle)

典型的动态规划题,最后有一点卡住了,正在思考的时候面试官直接告诉我思路了,然后就结束了。

三面

压力比较大,问了很多系统设计上的问题,很深入,并且最后给只给了10分钟左右的时间做一道算法题。

先是问了一些职业规划上的问题,比较随意。

然后开始问多线程方面的问题:

1.5000个客户端tcp长连接到服务器,json(id1 id2 money),服务端多线程并发处理并执行转账处理。

一开始没什么思路,然后面试官开始提醒,主要是数据库方面的操作

首先是以保证以事务为单位进行,然后为了提高并发性,每次操作只锁定要处理的行,但是一次操作可能涉及多个行,所以每个线程要先进入数据库完成所有相关行的锁定操作后才允许其他线程进入。

2.10亿用户数据中分别存在100个文件中,每个文件存储1000万行,每行一个用户信息 userId(32字节的字符串),活跃度(double),找活跃度数值最大的10000个userId和活跃度

建小顶堆,描述建堆的过程,以及算法复杂度。

在建堆的时候,有些数据可能是频繁更新的,有些更新的次数很少,如何优化?(没思路)

其它还有:

Redis为什么被经常用来做排行榜相关的业务(有序集合)

Redis集群上如何保证数据的同步

是否了解MySQL的索引(因为不知道,所以没继续问)

RPC的协议及原理

最后做一个题, 有序数组每个数平方后,不同数字的个数

要求算法时间复杂度O(n),空间复杂度O(1)

双指针问题,从大于0的地方开始向两边遍历

总结:

1.算法题的难度自身在easy-middle,有面试官的思路提示,因此难度并不大

2.系统设计偏好的题目有:

  • 1.Redis相关,存储原理,Redis集群,主从模式,Sorted Set
  • 2.分布式相关,RPC的协议和原理
  • 3.多线程,并发
  • 4.MySQL相关,行锁,表锁,聚簇索引
  • 5.数据结构相关,堆

3.基础知识点:

  • 1.TCP、UDP (在浏览器上输入一个网址,经历哪些步骤)
  • 2.Restful 风格
  • 3.http code
#字节跳动##实习##C++工程师##面经#
全部评论
爬虫URL去重一般会用bitmap
点赞 回复 分享
发布于 2020-02-20 16:32
楼主做题是只写伪代码还是写出可以运行的代码?
点赞 回复 分享
发布于 2020-02-20 15:49
楼主台阶那题为什么奇数个台阶甲就一定先到呢
点赞 回复 分享
发布于 2020-02-20 11:34
想问问楼主投的是什么部门
点赞 回复 分享
发布于 2020-02-19 23:52

相关推荐

1.项目介绍。2.美团外卖首页包含大量商家卡片,支持按距离、销量、评分筛选,且商家数量达数千级,如何设计前端渲染方案确保页面流畅滚动?如何优化筛选功能的响应速度和数据加载体验?3.美团到店团购订单页需要展示订单信息、核销状态、退款入口等,如何设计前端状态管理逻辑?用户支付成功后,如何确保页面状态实时更新且数据一致?如何处理支付超时、网络中断等异常场景?4.美团外卖的“骑手实时位置追踪”功能,需要在地图上实时显示骑手位置、配送路线和预计送达时间,前端如何基于WebSocket 实现位置实时同步?如何处理网络波动导致的位置延迟或丢失问题?5.美团首页的“个性化推荐”模块(如推荐商家、优惠活动),需要根据用户行为动态加载内容,如何设计前端缓存策略?如何平衡“推荐内容实时性”和“页面加载速度”?6.美团外卖的“购物车”功能支持添加商品、修改数量、选择规格(如口味、包装),如何设计前端数据结构和交互逻辑?当用户在多端(APP、H5、小程序)登录时,如何保证购物车数据同步?7.美团到店餐饮的“预约排队”功能,需要展示当前排队人数、预计等待时间、叫号提醒,前端如何实现实时更新?如何优化大量用户同时在线时的页面性能和消息推送可靠性?8.美团的“评价晒单”模块包含大量用户评价(文字、图片、视频),支持点赞、回复、筛选,如何设计前端架构实现评价的高效渲染和交互?如何处理地址库数据量大导致的加载缓慢问题?
点赞 评论 收藏
分享
评论
8
122
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务