2023-6-15 面试笔试复盘总结
四川君迪能源后端笔试2023-6-15
简答题:
-
线程和进程的区别
- 本质区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。
- 包含关系:一个进程至少有一个线程,线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
- 资源开销:每个进程都有独立的地址空间,进程之间的切换会有较大的开销;线程可以看做轻量级的进程,同一个进程内的线程共享进程的地址空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小。
- 影响关系:一个进程崩溃后,在保护模式下其他进程不会被影响,但是一个线程崩溃可能导致整个进程被操作系统杀掉,所以多进程要比多线程健壮。
-
Java的八大基本数据类型,对应的字节和包装类型
- byte,short,int,long,float,double,char,boolean
- 1,2,4,8,4,8,2,1
- Byte,Short,Integer,Long,Float,Double,Char,Boolean
-
a == b 和 a.equals(b) 的区别是什么
对于==:
- 对于基本数据类型来说,
==
比较的是值。 - 对于引用数据类型来说,
==
比较的是对象的内存地址。
对于equals:
-
类没有重写
equals()
方法:通过equals()
比较该类的两个对象时,等价于通过“==”比较这两个对象,使用的默认是Object
类equals()
方法。 -
类重写了
equals()
方法:一般我们都重写equals()
方法来比较两个对象中的属性是否相等;若它们的属性相等,则返回 true(即,认为这两个对象相等)。
- 对于基本数据类型来说,
-
深拷贝和浅拷贝的区别
-
浅拷贝:浅拷贝会在堆上创建一个新的对象,不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。
深拷贝:深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。
-
-
死锁的产生的4个条件
-
互斥:资源必须处于非共享模式,即一次只有一个进程可以使用。如果另一进程申请该资源,那么必须等待直到该资源被释放为止。
占有并等待:一个进程至少应该占有一个资源,并等待另一资源,而该资源被其他进程所占有。
非抢占:资源不能被抢占。只能在持有资源的进程完成任务后,该资源才会被释放。
循环等待:有一组等待进程
{P0, P1,..., Pn}
,P0
等待的资源被P1
占有,P1
等待的资源被P2
占有,......,Pn-1
等待的资源被Pn
占有,Pn
等待的资源被P0
占有。
-
编程题:
类似于力扣上的462.最小操作次数使数组元素相等 II,第一次笔试用的猿圈的在线笔试系统,在线的ide不习惯,加上要自己手打输入的模板导致调试了半天,最后时间到了。
其实是到不难的题,思路也对了,debug慢了。
题目要求每次将最大的数,改成第二大的,然后重复。
思路:
根据样例模拟一下,可以发现,每一次我们要把一个最大的数变成第二大的数,然后第二大的数就成为新的最大的数,我们不断重复这个操作即可。
这样的话,我们记录一下数组中的最大和最小值,再用一个map数组存一下每个数出现的次数,这样每次我们给答案加上要第二大的数的个数 和 上一轮最大的数的个数(因为上一轮的最大值变成了第二大的)
class Solution {
public int minMoves2(int[] nums) {
int ans = 0;
int n = nums.length;
int[] map = new int[50010];
int nmax = nums[n - 1];
int nmin = nums[0];
for (int i = 0; i < nums.length; i ++ ) {
map[nums[i]] ++;
nmax = Math.max(nmax, nums[i]);
nmin = Math.min(nmin, nums[i]);
}
for (int i = nmax; i > nmin; i -- ) {
if (map[i] != 0) {
ans += ans + map[i];
}
}
return ans;
}
}
集思数源笔试&面试 2023-6-15
面试的时候,技术栈和公司不太重合,导致看的出来面试官也很迷茫不知道问些什么。
技术面:
1.List,Map,Set的区别?
2.Java的八大基本类型,char为什么是基本数据类型,String不是?
3.文件流用过嘛,文件流打开了一个文件如果不关闭会怎么样,关闭的顺序是什么?
4.缓存穿透是什么?
5.知道SQL注入嘛?在MyBatis中怎么避免SQL注入?
6.MySQL中的intf,intv有什么区别(没听清楚也不知道是啥)
7.MySQL中怎么将日期类型转换成字符串类型,怎么将字符串类型转换成int类型?(用什么函数)
8.Linux中怎么查看在线的用户
9.Linux中怎么创建定时任务
反问:
公司的主要业务是哪个方面的
复盘总结
Linux相关指令多学多用一下,笔试中遇到了手写SQL的题,牛客上也刷一下。
还有就是Java线程,JVM相关的再看看。