字节测开12面面经
1、手撕代码:两个整数数组的重叠部分
public int[] get(int[] num1, int[] num2) { if (num1 == null || num2 == null) { return new int[0]; } Arrays.sort(num1); Arrays.sort(num2); List<Integer> list = new ArrayList<>(); for (int i = 0; j = 0; i<nums1.length&&j<num2.length;) { if (num1[i] < nums[j]) { ++i; } else if (num1[1] > nums[j]) { ++j; } else { list.add(num1[i]); ++i; ++j; } } int[] res = list.toArray(new int[list.size()]); }
2、DNS
3、http、https
4、java和python的区别
5、为什么想做测试开发
6、测试网易云音乐的歌单
7、智力题
1个满满的水池有4个水阀,打开一个水阀,1个小时能流完,问如果有4个一摸一样、互相独立的水池,怎么操作能求出水池的水流完的最短时长
——emmm,没回答上来,面试官解释了好几遍我还是不动它的意思,欲哭无泪,说让我结束后再好好想想
8、我的优点缺点
复盘:上来就手撕着实让我倒吸一口冷气,好在写出来了,思路也讲了,但是程序没运行出来,面试官是个小姐姐,也没为难我,最后还说觉得你这个小姑娘有意思,这。。。竟无言以对,结束差不多3分钟,hr打电话约了二面,感动想哭/(ㄒoㄒ)/~~
二面
1、手撕:给定数组[6,1,0,-1,0,2,3,-3,0,-2,0],求任意从中取出三个数有多少种取法
import java.util.*; public class Main { public static void main(String[] args) { int[] nums = {6,1,0,-1,0,2,3,-3,0,-2,0}; System.out.println(cal(nums)); } public static List<List<Integer>> cal(int[] nums) { List<List<Integer>> ans = new ArrayList(); int count = 0; int len = nums.length; for (int i = 0; i< len; ++i) { for (int j = 0; j<len; ++j) { for (int k = 0; k<len; ++k) { if (i == j || i ==k || j == k) { continue; } if (nums[i]+nums[j]+nums[k] == 0){ ans.add(Arrays.asList(nums[i], nums[j], nums[k])); count += 1; } } } } return ans; } }好难过,我一开始想用双指针,时间复杂度小一点,但是发现双指针会少很多结果,只能暴力,但是已经花了好长时间了,面试官不让我再再写了,好想哭,为啥不直接用暴力哇
java
1、代码里的count,在方法使用完后会怎么样
2、ArrayList和LinkedList的区别
3、和数组的区别——没回答上来
4、垃圾回收
5、进程间通信方式,区别——没回答上来
数据库
1、limit
2、order by
3、如何创建一个事务——没回答上来
linux
1、创建一个子进程——没回答上来
2、查看日志
思考题
有25匹马,速度都不同,但每匹马的速度都是定值。现在只有5条赛道,无法计时,即每赛一场最多只能知道5匹马的相对快慢。问最少赛几场可以找出25匹马中速度最快的前3名?
复盘:反正就是我太菜了,菜是原罪。而且能感觉到面试官后面急着回家的感觉,哎,好烦躁哦,表现的很不好
问的底层逻辑比较多,代码一开始没想好就写很浪费时间,可能要止步于此了
#字节招聘##面经##校招##测试开发工程师#