//## 百度一面
百度一面2021-7-20
八股
抽象类和接口区别
类加载过程,(各个属性分别是在哪个阶段赋值的,普通变量,静态变量)
redis和mysql区别
redis五种数据类型,你校园项目都用这五种类型存了什么
cookie和session的相同不同点
项目
1.你们是怎么实现的xxx?
2.为什么要换成你的方案?
3.你存的数据来源是哪来的?
4.服务器接收信息怎么接收?
5.你有在这个项目里搭建web server吗?
6.怎么搭建一个web server(发送请求的整个过程,中间各个部分怎么处理的)
7.nginx怎么找到哪台机器处理请求?
做两道题
// -1.单链表找环- ########################## // 地址: https://leetcode-cn.com/problems/linked-list-cycle/ class Node{ int val; Node next ; public Node(int val, Node next) { this.val = val; this.next = next; } } public class test { boolean isCircule(Node node) { if (node == null || node.next == null) { return false; } // double pointer Node fastPointer = node; Node slowPointer = node; //没有环, fast指针到达末尾=null的位置 while (fastPointer != null && fastPointer.next!=null) { slowPointer = slowPointer.next; fastPointer = fastPointer.next.next; if (fastPointer != slowPointer) { continue; } else { // 当二者相遇,表示有环 return true; } } // 没有环 return false; } public static void main(String[] args) { // 测试场景 // null // 1个node 2个node // >=2个形成环 } }
第二个题
//-2.第k大的数 -########################## public class NumK { /** * 可能有重复值 * @param array 查找数组 * @param numK 第k大的数 * @return 返回该数 */ public Integer getNoBigK(int []array,int numK){ // 边界条件 if (array == null || array.length <= 0 || numK>array.length || numK<=0) { return null; } this.sortArray(array); int index = array.length-1; // 结果index int nowNoK = 1; //统计当前是第几大的数 while (index >= 0 && nowNoK < numK && nowNoK <= array.length) { int getnumber = array[index]; // 筛选掉重复的值 while (index - 1 >= 0 && array[index - 1] == getnumber) { index--; } index--; nowNoK++; } if(index <0|| index > array.length || nowNoK!=numK){ return null; } return array[index]; } //快排 public void sortArray(int array[]) { sortHelp(array, 0, array.length-1); } public void sortHelp(int[] array, int start, int stop) { if (start >= stop) { return; } int part = partition(array, start, stop); sortHelp(array,start,part-1); sortHelp(array, part + 1, stop); } public int partition(int array[], int start, int stop) { int temp = array[start]; while (start < stop) { while (start < stop && temp <= array[stop]) { stop--; } array[start] = array[stop]; while (start < stop && temp >= array[start]) { start++; } array[stop] = array[start]; array[start] = temp; } return start; } public static void main(String[] args) { NumK numK = new NumK(); // // 测试快排 // int[] a = {1, 2, -2, 2, 3, 45, 121, 214, 12, 24}; // numK.sortArray(a); // System.out.println(Arrays.toString(a)); int[] example = {1, 2, -2, 3,2,2, 3, 45, 121, 214, 12, 24}; numK.sortArray(example); System.out.println(Arrays.toString(example)); int nok = 10;//第几大 Integer res = numK.getNoBigK(example, nok); System.out.println("第"+nok+"大的数是 " + res); } } #####################################分割##############################
百度二面2021-7-23
自我介绍
你在学校的项目?(科研项目..)
介绍一下你实习的项目?
实习项目
1.你的数据是从哪读来的?
2.你的数据存在两个文件系统里面?为什么?
3.你的实习的改进方案指标
4.序列化格式?
5.有没有遇到什么问题?
6.你觉得好的代码要有什么要求?
7.写段代码吧?
代码
实现一个arraylist# add remove方法
// 啪地敲完了,很快嗷。
百度三面2021-7-26
没有什么技术相关的,聊天乱吹就行。
全部评论
(5) 回帖