记录一下小米实习的面经
二面
1 String 、StringBuilder、StringBuffer的区别 String是否线程安全
2 wait() 和 sleep 的区别 (wait有参数和无参数)
3 被final修饰的特点 (细)
4 接口和抽象类的区别(问的巨细)
5 synchorized 和 lock 的区别
6 算法 数组
{2,0,4,0,0,6,0,0} 把0 全部挪在后面其他数字挪到前面 ,并且保证非0数字的相对顺序不变
public int[] swapZeroToRight(int [] arr){ int i = 0,j; while(i<arr.length&&arr[i]!=0) i++; j = i+1; while(j<arr.length){ if(arr[j]!=0){ int temp = arr[i]; arr[i++] = arr[j]; arr[j++] = temp; }else { j++; } } return arr; }
一面
1.数据库索引 b+树特点
2 剩下的都是一些面经里有的基础
3 多态
4 算法
leetcode 402 移掉K位数字使数字最大
public static String removeKdigits(String num, int k) { LinkedList<Character> stack = new LinkedList<>(); for (char digit : num.toCharArray()) { while(stack.size() >0 && k>0 && stack.peekLast()>digit){ stack.removeLast(); k--; } stack.addLast(digit); } for (int i = 0; i < k; i++) { stack.removeLast(); } StringBuilder sb = new StringBuilder(); boolean loadZero = true; for (Character c : stack) { if(loadZero && c == '0') continue; sb.append(c); } return sb.length() == 0?"":sb.toString(); }