【面经记录】字节跳动实习面试【大数据】

字节跳动面试

时间:2019年7月30日

地点:北京海淀区丹棱街1号互联网金融中心15层

面试岗位:大数据研发实习生

面试过程:

  一共四面,三面是技术面,最后一面是HR面,流程很正式。不愧是出了名的重视算法题,整个面试过程以手写算法题为主。(应该是一共写了七八道算法题)

  主要问题:

  • 自我介绍,研究方向,简单的项目经历
  • 项目中用Storm做了什么,Storm的整体架构介绍一下(Topology、Spout、Bolt)
  • Storm集群中的主节点和从节点分别叫什么?(nimbus、supervisor)主节点是如何选举的(依靠Zookeeper)?
  • Java中的HashMap底层原理(链表的数组),HashMap的key可以为null吗,value可以为null吗?(结论是:HashMap的key、value值均可为null,而HashTable对象的key、value值均不可为null。)
  • HashMap和LinkedHashMap有什么区别
  • 【手写算法第一道】:用LinkedHashMap实现LRU淘汰策略
  • 【手写算法第二道】:最小栈,要求压栈、弹栈、取得最小值的复杂度均为O(1),用两个栈实现,写完后追问:如何减小这个最小栈的空间开销(第一种:不要每次都存,最小值不变则不更新,第二种:存放索引值(地址值))
  • 【手写算法第三道】:两个大整数做加法(先说了可以用java中的大数类,然后问如果不用这个怎么做,写了一个用字符串保存,从低位开始加的,最后被指出来一个问题:没有考虑符号位)
  • 对kafka有什么了解,讲一下基本原理
  • 对关系型数据库有什么了解,mysql索引的底层实现(B+树),主键索引和辅助索引
  • 问对Hadoop的HDFS、MR这些有多少实践经验
  • 【手写算法第四道】:二叉树的层次遍历
  • 【手写算法第五道】:二维数组中的查找(按行有序,按列有序)
  • 【手写算法第六道】:读发票上的钱数,给出1001.25,返回一个字符串:一千零一元二角五分
  • 对java有多少了解,java的锁机制,synchronized是可重入的吗,可重入是什么意思,和ReentrantLock有什么区别,给静态方法加synchronized和非静态方法加有什么不一样?
  • Redis用来做什么,是存在内存中吗,设置过期时间,真的比数据库快吗,快多少?
  • 【手写算法第7道】:m个医生,n个病人,给出每个病人看病所需的时间,写一个函数给每个医生分配应该看的病人。(想到了用一致性哈希,但是没写过用一致性哈希的代码,所以这道题基本很失败)
  • 登录网页打开爱奇艺看一个视频,技术原理是什么,用到了哪些协议?(HTTP、DNS、UDPTCP、IP、ARP)
  • 数据库的内连接和左外连接,举例说明
  • 未来一年在技术和职业上有什么规划
  • 第四面:HR面问的是一些开放性问题,根据自己情况实事求是回答就好
原文地址:https://www.cnblogs.com/gzshan/p/14150526.html