赞
踩
title: 2021年3月7日 蚂蚁金服的OceanBase Java后端开发实习面经(一面)
tags: 面经
自我介绍
先手撕一道算法题(在手撕算法题先从暴力解法到二分法,一步一步优化,这道题的挺简单的,
就是可能太紧张了当时边界条件可能处理的不太好,还有就是测试我的代码,如何同设置case去测试你写的代码)
线程与进程的区别?
假设我现在去解析一百个文件,我现在是用多线程还是用多进程呢?
如何我这里文件切换的耗时比文件分析的耗时小的时候,应该使用多线程还是多进程呢?
即多进程与多线程的好处都有哪些呢?
tcp与udp的区别是什么?
tcp有哪些操作来保证tcp的可靠传输呢?
tcp怎么建立连接的,为什么需要三次握手呢?二次不行吗?
死锁是怎么产生的?怎么来避免死锁呢?
反问环节
教科书上有句非常经典的话是“进程是资源分配的最小单位,线程是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; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。