今天给大家分享一篇 2021年4月19日 华为技术面过经,业务面凉经, 希望大家在面试中能够斩获Offer, 找到自己满意的工作。 一起来看看吧~
最近整理了一系列的Java面试题,包含了Java基础、进阶、多线程、并发编程、数据库(MySQL、Redis、MongoDB、Memcachedd等等)、Spring全家桶、MyBatis、ZooKeeper、Dubbo、Elasticsearch、RabbitMQ、Kafka、Linux、Netty、Tomcat以及阿里、腾讯、字节、百度等大厂的面试真题。
点击下载完整PDF☞ 2022年最新Java面试题集
2021年4月20日更新-----------------业务面GG
1、自我介绍
2、自己的项目细节,我做的是商场项目,我主要就是介绍了一下自己项目的各个模块实现,大致原理,面试官主要问了JWT无状态登录相关,主要还是根据项目去问吧
3、问我为什么本硕电气要学java,然后让我介绍一下研究生期间的项目,我说了电机项目,估计面试官也不懂
4、问java基础,JMM模型,JVM的堆空间,问的很基础
5、问了二叉树相关,让我画一下,然后描述一下几种遍历方法
6、问了链表的插入
7、数据库在单机系统下如何保持高并发,如何调优,这个我也不太记得了,就大概说了一下索引的创建,然后怎么利用覆盖索引避免文件内排序
8、不太记得了 后续补充, 总之问的偏基础,甚至完全没有问计算机网络、操作系统
9、补充,手敲Class锁和对象锁的区别
手撕代码 题目也比较简单
// 终端产品在进行一项噪音监测实验。若将空实验室平面图视作一个 nm 的二维矩阵(左上角为 [0,0])。
// 工作人员在实验室内设置了若干噪音源,并以 [噪音源所在行,噪音源所在列,噪音值] 的形式记录于二维数组 noise 中。
// 噪音沿相邻八个方向传播,在传播过程中,噪音值(单位为分贝)逐级递减 1 分贝,直至分贝削弱至 1
// (即噪音源覆盖区域边缘噪音分贝为 1);
// 若同一格被多个噪音源的噪音覆盖,监测结果不叠加,仅保留较大的噪音值
// (噪音源所在格也可能被其他噪音源的噪声传播所覆盖)。
// 在所有噪音源开启且持续传播情况稳定后,请监测每格噪音分贝数并返回他们的总和。
//注意:
// 除噪音源以外的所有格初始值为 0 分贝; 不考虑墙面反射。
// 示例 1:
// 输入:n = 5, m = 6, noise = [[3,4,3],[1,1,4]]输出:63
// 工作人员在实验室内设置了若干噪音源,并以 [噪音源所在行,噪音源所在列,噪音值] 的形式记录于二维数组 noise 中。
// 噪音沿相邻八个方向传播,在传播过程中,噪音值(单位为分贝)逐级递减 1 分贝,直至分贝削弱至 1
// (即噪音源覆盖区域边缘噪音分贝为 1);
// 若同一格被多个噪音源的噪音覆盖,监测结果不叠加,仅保留较大的噪音值
// (噪音源所在格也可能被其他噪音源的噪声传播所覆盖)。
// 在所有噪音源开启且持续传播情况稳定后,请监测每格噪音分贝数并返回他们的总和。
//注意:
// 除噪音源以外的所有格初始值为 0 分贝; 不考虑墙面反射。
// 示例 1:
// 输入:n = 5, m = 6, noise = [[3,4,3],[1,1,4]]输出:63
参考代码:
import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; public class Test { public static void main(String[] args) { int[][] matrix = new int[5][6]; int[][] noises = {{3,4,3},{1,1,4}}; int db = CaculateDB(matrix,noises); System.out.println(db); } private static int CaculateDB(int[][] matrix, int[][] noises) { for (int[] noise : noises) { bfs(matrix,noise); } for (int[] ints : matrix) { System.out.println(Arrays.toString(ints)); } return getSum(matrix); } private static void bfs(int[][] matrix, int[] noise) { int x =noise[0]; int y =noise[1]; int value =noise[2]; matrix[x][y]=value; Queue<Node> queue = new LinkedList<Node>(); Node root = new Node(x,y,value); queue.offer(root); while (queue.size()!=0){ Node node = queue.poll(); if (matrix[node.x][node.y]<node.val){ matrix[node.x][node.y]=node.val; } if (node.x>0&&node.y>0&&node.x<4&&node.y<5&&node.val>1){ queue.offer(new Node(node.x-1,node.y,node.val-1)); queue.offer(new Node(node.x+1,node.y,node.val-1)); queue.offer(new Node(node.x,node.y+1,node.val-1)); queue.offer(new Node(node.x,node.y-1,node.val-1)); queue.offer(new Node(node.x-1,node.y-1,node.val-1)); queue.offer(new Node(node.x-1,node.y+1,node.val-1)); queue.offer(new Node(node.x+1,node.y+1,node.val-1)); queue.offer(new Node(node.x+1,node.y-1,node.val-1)); } } } private static int getSum(int[][] matrix) { int sum=0; for (int[] ints : matrix) { for (int anInt : ints) { sum+=anInt; } } return sum; } } class Node{ public int x; public int y; public int val; public Node(int x, int y, int val) { this.x = x; this.y = y; this.val = val; } }
第二天下午两点 业务面GG
主要还是笔试只A出半道,无话可说了。。哎
----------------------------
补充:一上来就说你这种情况不适合去华为实习啊,你有工作经验啊(楼主本身在电力系统待过),我说这个工作经验没用啊,然后就开始扯淡了,什么人生啊,理想啊,
然后话锋一转,说你这个笔试不太行啊,才120分,击败了53%,有点拉胯。 嗯 这个我承认,我说我学习策略的问题,刷题太少。 然后面试官质疑我能力不太行。 好吧 我确实菜 这也没啥好说的
然后话锋又双一转 ,问我对电动汽车的蓬勃发展,电动汽车为什么能全面代替燃油车,提出一些自己的观点。我??? 行吧 除了说能源清洁我也说不上啥了,没太关注。
然后就继续blabla一些无关紧要的话题。
最后说我不要觉得压力太大,迷茫,不要觉得痛苦,因为全中国至少千万人都是这么过来的。嗯 这句话我其实还蛮认同的
然后就拜拜了 五分钟后一查,业务面未通过,效率倒是挺高的。