一站式面试,一天面完,时间都在2022.9.17下午,面完当场知道结果(除三面外)
非常忍受不了的是到点后全部候选人进去排队,等特别久才轮到自己
自我介绍
一些个人情况的询问,包括社团、实习等,了解过贝壳吗
手撕:判断数组中所有的数字是否只出现一次
给定一个个数字arr,判断数组arr中是否所有的数字都只出现过一次。
输入描述:输入包括两行,第一行一个整数n(1≤n≤10^5),代表数组arr的长度。第二行包括n个整数,代表数组arr(1≤arr[i]≤10^7)。
输出描述:如果arr中所有数字都只出现一次,输出“YES”,否则输出“NO”。
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; sc.nextLine(); for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } HashSet<Integer> set = new HashSet<>(); for (int i = 0; i < n; i++) { if (!set.isEmpty() && set.contains(arr[i])) { set.remove(arr[i]); } else { set.add(arr[i]); } } if (set.size() != arr.length) { System.out.print("NO"); } else { System.out.print("YES"); } } }
Java八种数据类型有哪些,在内存哪个位置?
内存四大分区,分别存放什么
堆和栈的区别
进程和线程的区别
顺序表和链式表的区别
TCP和UDP的区别
Linux有关命令:查找文件所在目录、读取日志新的100行(tail)
SQL手撕:user表,查参与活动最早(时间time)的前100人的姓名和手机号
select name, tel from user order by time asc limit 100
内存泄漏有了解吗?
说说熟悉的排序算法,谁的时间复杂度最低
给一个手机设计测试用例,发挥想象
反问:
1.自我介绍
2. 挖实习、项目:具体内容、BUG如何发现与解决、对BUG定级等;测试用例条数、怎样实现的、难点等;
3. 手撕代码1:合并两个有序的数组
给出一个有序的整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组
数据范围: 0≤n,m≤100,∣Ai∣<=100,∣Bi∣<=100
注意:
1.保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素数目分别为 m 和 n,A的数组空间大小为 m+n
2.不要返回合并的数组,将数组 B 的数据合并到 A 里面就好了,且后台会自动将合并后的数组 A 的内容打印出来,所以也不需要自己打印
3. A 数组在[0,m-1]的范围也是有序的
import java.util.*; public class Solution { public void merge(int A[], int m, int B[], int n) { int a = m - 1; int b = n - 1; int index = m + n - 1; // m >= n while (a >= 0 && b >= 0) { if (A[a] > B[b]) { A[index--] = A[a--]; } else { A[index--] = B[b--]; } } // m < n while (b >= 0) { A[index--] = B[b--]; } } }
给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。
例如,给出n=3,解集为:
"((()))", "(()())", "(())()", "()()()", "()(())"
数据范围:0≤n≤10
要求:空间复杂度O(n),时间复杂度O(2^n)
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串ArrayList */ public ArrayList<String> generateParenthesis (int n) { // write code here ArrayList<String> res = new ArrayList<>(); if (n == 0) { return res; } dfs(n, 0, 0, "", res); return res; } public void dfs (int n, int left, int right, String s, ArrayList<String> res) { if (left > n || right > n) { return; } if (left == n && right == n) { res.add(s); } if (left >= right) { String temp = new String(s); dfs(n, left + 1, right, s + "(", res); dfs(n, left, right + 1, temp + ")", res); } } }
反问:
反问: