2021年3月7日 蚂蚁金服的OceanBase Java后端开发实习面经(一面)

  • 时间:
  • 浏览:
  • 来源:互联网

title: 2021年3月7日 蚂蚁金服的OceanBase Java后端开发实习面经(一面)
tags: 面经


2021年3月7日 蚂蚁金服的OceanBase Java后端开发实习面经(一面)

自我介绍
  先手撕一道算法题(在手撕算法题先从暴力解法到二分法,一步一步优化,这道题的挺简单的,
  就是可能太紧张了当时边界条件可能处理的不太好,还有就是测试我的代码,如何同设置case去测试你写的代码)
  线程与进程的区别?
  假设我现在去解析一百个文件,我现在是用多线程还是用多进程呢?
  如何我这里文件切换的耗时比文件分析的耗时小的时候,应该使用多线程还是多进程呢?
  即多进程与多线程的好处都有哪些呢?
  tcp与udp的区别是什么?
  tcp有哪些操作来保证tcp的可靠传输呢?
  tcp怎么建立连接的,为什么需要三次握手呢?二次不行吗?
  死锁是怎么产生的?怎么来避免死锁呢?
  反问环节

1. 线程与进程之间的区别? 多进程与多线程的优缺点以及多进程与多线程的使用场景?

进程、线程、多进程、多线程的优缺点

图文并茂-带你搞懂多线程和多进程

教科书上有句非常经典的话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”。但是在

(1)线程与进程的区别:

线程是进程划分成的更⼩的运⾏单位,⼀个进程在其执⾏的过程中可以产⽣多个线程。线程和进程最⼤的不同在于基本上各进程是独⽴的,⽽各线程则不⼀定,因为同⼀进程中的线程极有可能会相互影响。线程执⾏开销⼩,但不利于资源的管理和保护;⽽进程正相反。

进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发

线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发

一个程序至少有一个进程,一个进程至少有一个线程,线程依赖于进程而存在;

进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存。

(2)多线程与多进程的优缺点:

(3)使用的场景:

多线程和多进程 及其应用场景

总结:

假设我现在去解析一百个文件,而且这里文件切换的耗时比文件分析的耗时小的时候,所以就应该选用多进程。因为采用多进程,一个文件的分析崩溃不会影响到其他文件的分析,100个文件之间保持相互之间的隔离,保证安全。

手撕的算法题为:

//评测题目: 递增的数组[1, 2, 3, 5, 9, 15, 17],查找数字n

// 输入:int[] a, int n

// 输出:找到,返回idx;未找到,返回-1

// 测试case:

//     1. a = null, []

//     2. a = [1, 2, 3], n = 0, 1, 2, 18 

public int Find(int[] a, int n){   // n=1
  if(a == null || a.length == 0){
             return -1; 
  }
   int len = a.length;                    // 3
   int low = 0, high = len - 1;           // l=0, h=2
        // mid=1
   while(low <= high){  
      int mid = low + (high - low) >> 1;   //0<2;   a]=2
     if(a[mid] < n){                    // 2>1
         low = mid + 1;
        }
       else if(a[mid] > n){                
         high = mid - 1;                //h=0
        }else{
         return mid;
        }
    }
   return -1;
}

本文链接http://www.dzjqx.cn/news/show-617153.html