【秋招面经】字节跳动-秋招提前批-深圳后端工程师 二面面经

【秋招面经】字节跳动-秋招提前批-深圳后端工程师 二面面经

这一面是提早下班+叫女朋友帮忙送电脑过来,然后在公司附近找了个安静的咖啡厅面试的

可能不是自己熟悉的环境再加上和面试官的网络不是很好

整体的体验就很emmm

应该是凉了,不过也意识到了自己的一些弱点哈哈哈哈

不多说了,直接切入张正题吧

1、无向图

头条有 10 个办公点,总部在中航广场,有的办公点之间有摆渡车供员工使用。

  1. 摆渡车在两个办公点之间来回摆渡,摆渡车的路线是已知的。一鸣从总部出发,能否在不回到总部的情况下通过摆渡车参观完所有办公点?

  2. 摆渡车在两个办公点之间来回摆渡,不同办公点之间花费的时间是已知的且不同。设计一个摆渡车路线,要求:

    1. 员工能通过换乘从一个办公点到达任意一个办公点
    2. 使用的摆渡车数量尽可能少
    3. 各摆渡车路线的总时间尽可能少

其实吧就是两个无向图的题。但是我个人真的图相关的题目做的太少了。做的慢,而第二题也没完全实现。

思路如下:第一题为广度遍历,第二题为最小生成树。其实第二题的二三问我有点不太理解,他们不应该会有个优先级么?

// 第一题
private static boolean visist(Node start){
if(start == null) return false;
Set<Node> visited = new HashSet<>();
Deque<Node> queue = new ArrayDeque<>();
queue.addLast(start);
// 广度遍历
while(!queue.isEmpty()){
Node next = queue.pollFirst();
visited.add(next);
for(Node node: next){
// 不回到总部
if(next != start) queue.addLast(node);
}
}
return visited.size() == 10;
}

正好趁着面经的时候来复习一下最小生成树。

最小生成树

  • 生成树: 一个连通图的生成树是指一个连通子图,它含有图中全部n个顶点,但只有足以构成一棵树的n-1条边。一颗有n个顶点的生成树有且仅有n-1条边,如果生成树中再添加一条边,则必定成环。
  • 最小生成树: 在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树。
// 第二题
明天上班补充一下

2、虚拟内存

这个应该没有什么悬念吧,结合分页技术可以提高程序可用内存空间

百度百科-虚拟内存

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。

3、反射

他问我反射是怎么实现的,我其实是有点懵逼的

因为我只知道反射是个什么东西,但是我不知道是怎么做到反射的

回答原理吗?我不太懂

如果是问我如何去实现一个反射,那么步骤大概如下

  1. 获取到想要的对象的Class对象。Class对象是类加载进JVM之后就会一直维护的一个对象,可以说是一个类存在于JVM的标志。可以通过Class.forName()、str.getClass()、String.class等方法来获取Class对象
  2. 通过Class对象对类进行一系列的操作,包括调用构造器、创建新的类的实例、调用类的静态方法、访问类的域和方法等。

我搜了一下好像没有讲到Java到底是怎么具体实现反射的,最深只讲到了Method的invoke方法的源码,有兴趣的可以去参考一下

大白话说Java反射:入门、使用、原理

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://cong-onion.cn/archives/字节跳动-秋招提前批-深圳后端工程师 二面面经


100%