字节跳动广告端实习生面经

1. 自我介绍。
2. 介绍项目是怎么设计的,如何实现。
3. 微信扫码登录有了解吗?如何实现。
4. 如何上锁?java方面sychronized和reentrylock,数据库for update加互斥锁。
5. 数据库事务类型?
6. Mysql支持事务吗?我说看存储引擎,innodb支持,myisam不支持。
7. innodb索引存储结构?B+树
8. B+树和B树区别?
9.有联合索引a_b_c,查询条件where b=1 and a=1,走不走索引?我说最左匹配原则,可以使用索引。
10. redis几种数据结构?
11. zset的底层?字典和跳表。
12. zset添加元素的时间复杂度,为什么?我说logn,n是节点的个数(感觉好像不太对)。
13. 计算机网络结构介绍一下?tcp/ip协议的分层概念。
14. ip协议是干嘛的?我说找主机用的(我也不知道。。。。)。
15. 挥手为什么要比握手多一次?我说握手的时候服务器是准备好的,没有必要多发一次tcp消息,因为握手挥手阶段基本没有数据传输,加大了信道负载。
16. get和post的区别?get和post都是http1.0版本的方法,get用于查询,post用于修改,get传输数据小于post。
17.springboot是干吗的?springboot可以简化spring的配置,避免写大量的xml。
18. spring你觉得解决了什么问题?我说用来管理对象,避免自己手动管理。
19. hashtable和hashmap有什么区别?前者继承dictionary,后者继承abstractmap,巴拉巴拉。
20 最关键的区别是什么?线程安全。
21 hashtable和concurrentmap的区别。前者锁力度大,锁整个对象,后者只锁头结点。
22 只锁头结点?1.7之前锁segment,1.8之后锁头结点。
23 hashmap的实现? 数组+链表。

陆续记起来的一些问题:
1. 分布式锁了解吗?我说了一下redis里面通过setnx,比如说10台机器,获取一半机器的锁就认为获得锁了,但是可能存在一些问题,比如每个机器时间是不同步(这里主要涉及锁的释放问题,比如客户端宕机了,自己说了一堆感觉越说越不对,不过面试官也没说什么)
2. session和cookie的区别?我说http是无状态的,但是一些需求比如购物车需要保存数据,巴拉巴拉的(面试官说这跟问题没有关系),后面我就说服务器保存session,客户端的cookie中保存sessionid,服务器根据sessionid获取用户信息。
算法题:
有n(n<=10^8)个整数的无序数组 [1, 8, 6, 5, 3, 2, 9, 7],找出每个元素右边最近大于当前元素的数, 不存在则输出-1,要求时间复杂度O(N)。
输入:
[1, 8, 6, 5, 3, 2, 9, 7]
输出:
[8, 9, 9, 9, 9, 9, -1, -1]

第一时间以为是找右边大于当前元素数量,心想怎么是个hard题。后来发现不是。
又以为是循环数组,后来发现又不是。
最后说用stack来解决,面试官就说你写一下吧,10分钟。

写完之后还有一些问题,面试官就说你自己解决一下,后面终于搞定了。

希望能通过
#字节跳动##实习##Java工程师##面经#
全部评论
tql, 面的后端吗?
点赞 回复
分享
发布于 2020-03-01 23:06
楼主什么时候投的,日常实习吗
点赞 回复
分享
发布于 2020-03-01 23:11
小红书
校招火热招聘中
官网直投
楼主是是这个岗位吗?
点赞 回复
分享
发布于 2020-03-03 01:30
老哥有后续通知吗?一般要面几面呢?
点赞 回复
分享
发布于 2020-03-03 17:33
楼主这是大部分都答出来了吗,这也没过吗。。
点赞 回复
分享
发布于 2020-03-16 11:11
用栈怎么实现
点赞 回复
分享
发布于 2020-03-19 16:08
楼主,请问你分享的是包括几次面试呢?收到答复了吗?
点赞 回复
分享
发布于 2020-03-21 16:20
请问什么时候给你通知二面了?
点赞 回复
分享
发布于 2020-03-22 19:19
     public static int[] method(int[] arr) {         int[] res = new int[arr.length];         Arrays.fill(res, -1);         Stack<Integer> stack = new Stack<>();         for (int i = 0; i < res.length; i++) {             //递减栈             while (!stack.isEmpty() && arr[stack.peek()] < arr[i]) {;                 res[stack.pop()]=arr[i];             }             stack.push(i);         }         return res;     }
点赞 回复
分享
发布于 2020-03-25 11:40

相关推荐

6 87 评论
分享
牛客网
牛客企业服务