百度提前批一二三面2021-7月
//## 百度一面
百度一面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
没有什么技术相关的,聊天乱吹就行。
#百度招聘##面经##校招##百度##Java工程师#
