字节跳动暑期实习后端开发实习生-Data一面面经
时间:2.25 16.00 时长1h
1、自我介绍
2、项目:项目流程、整体框架、某个点的实现细节、有没有更好的实现思路
数据结构
3、拓扑排序过程(每次找入度为0的结点取出,并将其指向的结点的入度减一)
4、数组中找第k大(快排思想On)
5、数组中找前k大(堆排O(nlogk))
网络
6、TCP/IP有哪四层(应用层,传输层,网络层,网络接口层)
7、应用层有哪些协议(答了HTTP,FTP,DHCP,SMTP)
8、传输层有哪些协议(TCP,UDP)
9、TCP三次握手,为什么要三次握手(略)
数据库
10、ACID并解释(原子性,一致性,隔离性,持久性)
11、数据库范式(答了1,2,3,BC,4,5范式)
12、索引的分类(主键,唯一,普通,聚簇,非聚簇)
13、聚簇索引和非聚簇索引的区别(主键索引叶子节点存储的是数据,而非主键索引叶子节点存储的是数据地址,还有一些别的回表之类的)
Java
14、类加载机制(双亲委派机制)
15、类加载器有哪些(启动类、扩展类、应用程序类、自定义)
16、Java中exception有哪些(filenotfound,IO等)
17、Java中异常的分类(忘了)
18、springboot启动流程(不会)
算法题
给定一个整数n和一个数组A,返回从A中元素组成的不超过n的最大整数。
示例:n=23121,A={2,4,9},返回22999
我的思路是从n的最高位开始,从A中找出不超过此位值的最大值,然后有三个分支:
(1)如果找出来的值相等,则递归找下一位
(2)如果找出来的值小于此位,那么后面位都用A中最大元素填充
(3)如果大于,此处代码由于时间问题未写完
反问环节
问了部门的具体业务,然后是面试的评价,面试官是这么说的:看出来你看了很多书,但是语言方面还得加强,代码规范不怎么样(想问下大家刷算法题要怎么注重代码规范呢?),最好有自己的博客之类的。
总的来说本次暑期实习的面试难度算是比较简单的,问了问题之后都没有追问(上次面日常实习疯狂追问,比如问完get和post区别后,追问get是否能在包体内存数据,get是否能修改服务器的数据之类的)。
八股有两题没答上来,算法题没写完,不过思路应该是对的吧,毕竟我跟面试官说完思路之后才开始写的。写完后面试官还追问了一些其他问题,有没有开源贡献之类的(当然没有),有没有积极关注最新技术动向(当然也没有),会不会这些会减分啊?
许愿二面!!!
刚收到面试体验问卷,应该是凉了