滴滴后端面试初体验

以前没有参加过面试,也没有什么项目经历,就是看见导员发的消息抱着试一试的心态投了一个简历,结果真的发了面试通知,整个人就麻了/(ㄒoㄒ)/~~,就用两天疯狂在网上找Java八股文企图临时抱拂脚,结果发现越是要背,要背的东西越多。果然是得赶快准备起来了呀!!!顺便复盘一下整个过程。

1、简述一下进程和线程的区别

进程是资源分配的最小单位,是独立运行的最小单位,是一个执行中程序的实例。
线程是进程划分的任务,是一个进程内可调度的实体,是CPU调度的基本单位,用于保证程序的实时性,实现进程内部的并发。
对应关系:一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程依赖于进程而存在。
定义:进程是资源分配的最小单位,线程是CPU调度的最小单位
地址空间:进程在执行过程中拥有独立的地址空间,而多个线程共享进程的地址空间。
通信:由于同一进程中的多个线程具有相同的地址空间,所以这些进程之间的同步和通信比较容易,线程间可以直接读写进程数据段来进行通信。
适用范围:由于进程崩溃后,在保护模式下不会对其他进程产生影响,因此进程适用于多核、多机分布;线程适用于多核。多进程比多线程健壮。
调试开销:进程编程调试简单可靠性高,但是创建销毁开销大;线程正相反,开销小,切换速度快,但是编程调试相对复杂。

2、怎么解决死锁问题

解决死锁的方法即破坏产生死锁的四个必要条件之一,主要方法如下:
资源一次性分配,破坏请求条件,这样就不会有请求出出现;
只要有一个资源得不到分配,也不给这个进程分配其他的资源,破坏占有并等待条件。
可抢占资源:当进程新的资源未得到满足时,释放已占有的资源,从而破坏不可抢占条件;
资源有序分配法:系统给每一类资源都分配一个序号,每个进程按编号递增的顺序请求资源,释放则相反,从而破坏环路等待条件。

3、TCP为什么需要使用滑动窗口

4、写代码:一个数组里面除了一个数只出现一遍,其他数字都重复出现过,编写代码找出只出现一次的数字。
我写的是用HashMap存放数字和出现的次数。写完就问我还有没有什么优化的点,有没有其他思路。比如两个数消除之类的,不过没想到啊啊啊我是傻逼。
5、顺便就开始问HashMap的底层结构,哈希表元素塞满以后怎么扩容,什么程度需要扩容
6、选择排序,怎么优化,堆排序
7、mysql建索引的时候需要注意什么问题
8、5升水和3升水,怎么得到四升的水
9、写一个求x的次方的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值