2023-6-15 面试笔试复盘总结

四川君迪能源后端笔试2023-6-15

简答题:

  1. 线程和进程的区别

    • 本质区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。
    • 包含关系:一个进程至少有一个线程,线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
    • 资源开销:每个进程都有独立的地址空间,进程之间的切换会有较大的开销;线程可以看做轻量级的进程,同一个进程内的线程共享进程的地址空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小。
    • 影响关系:一个进程崩溃后,在保护模式下其他进程不会被影响,但是一个线程崩溃可能导致整个进程被操作系统杀掉,所以多进程要比多线程健壮。
  2. 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
  3. a == b 和 a.equals(b) 的区别是什么

    对于==:

    • 对于基本数据类型来说,== 比较的是值。
    • 对于引用数据类型来说,== 比较的是对象的内存地址。

    对于equals:

    • 类没有重写 equals()方法:通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象,使用的默认是 Objectequals()方法。

    • 类重写了 equals()方法:一般我们都重写 equals()方法来比较两个对象中的属性是否相等;若它们的属性相等,则返回 true(即,认为这两个对象相等)。

  4. 深拷贝和浅拷贝的区别

    • 浅拷贝:浅拷贝会在堆上创建一个新的对象,不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。

      深拷贝:深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。

  5. 死锁的产生的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相关的再看看。

posted @ 2023-06-15 19:44  KU做人  阅读(60)  评论(0编辑  收藏  举报