写在前面
字节的面试官都比较好,社招面试字节的话尽量走内推,然后HR会跟你定面试时间,现在面试大都是视频面试,字节一般是在牛客网上,会有一两道算法题,不过不会太难,一般都是LeetCode上简单到中等难度的题,所以大家不要把字节的算法想的太难,要把数据结构的基础足够重视,然后灵活利用这些基本的数据结构去解决问题,然后面试官会直接从你的项目中开始聊,所以项目一定要写自己负责的模块,以及遇到的困难怎么去解决的等等。
经典问题回顾
- 在涉及支付的接口是如何保证接口的高可用,以及在遇到弱网条件下,发出的请求没有回复怎么办?
- 消息队列问题,如何保证消息的可靠性,不被重复消费,多个相同的消息,如何保证只消费一次?
- 你负责的功能模块的UV怎么去做的?对于某些某段时间内求情次数非常大的用户如何去处理呢?
- Redis基本数据类型底层是怎么去实现的?有了解过吗?
- 在浏览器输入网址敲下回车后发生了什么?从网址DNS解析到HTTP三次握手等过程
- 在服务的多节点情况下,如何保证请求不会被分配到坏的节点上去的?
- Redis分布式锁是怎么做到的?锁的过期时间怎么去设计的?如何保证当前锁不会释放掉其他锁?
- HTTPS和HTTP的区别,HTTPS是如何防止消息被篡改的呢?HTTPS有用到对称加密吗?哪些地方用到了?
- 写一个算法题吧,给一个有序的int数组和数组当中元素k,输出元素k在数组当中出现的次数。
例如:[2,3,4,5,5,5,6,8] k=5 output:3 要去算法的时间复杂度不超过O(n),也就是说不能去遍历数组了 - 好,这道写不出来再来一道,用两个栈实现一个队列
其实发现算法题确实不难,然后大厂都比较关注项目当中的一些极端特殊情况下怎么去解决问题,基本都是分布式高并发的情况下去提问题。