首页 > 虾皮一面(凉经)
头像
松果i松果
编辑于 2020-07-22 17:16
+ 关注

虾皮一面(凉经)

面了一个小时,自以为聊的还行,结果第二天就收到了感谢信。可能我答错了一些问题吧。
1.自我介绍

操作系统:

2.进程和线程的区别?
【1】线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
【2】一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
【3】进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;
【4】调度和切换:线程上下文切换比进程上下文切换要快得多。
3.进程的5个状态?
【1】新建:
【2】就绪态:创建线程对象后,其他线程调用了该对象的start()方法。等待被线程调度选中,获取cpu的使用权。
【3】运行态:就绪态的线程获得了cpu时间片。
【4】阻塞态:线程因为某种原因放弃了cpu的使用权,直到线程再次进入就绪态。
【5】死亡:
4.就绪态能够到阻塞态吗?(我答了:能……)

5.死锁的四个条件?
【1】互斥条件:资源不能被共享,只能由一个进程使用。
【2】请求与保持条件:已经得到资源的进程可以再次申请新的资源。
【3】非剥夺条件:已经分配的资源不能从相应的进程中被强制地剥夺。
【4】循环等待条件:系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
6.如何避免死锁?(我答了:破坏死锁的条件……)
【1】死锁的避免(银行家算法):系统对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,如果分配后系统可能发生死锁,则不予分配,否则予以分配。这是一种保证系统不进入死锁状态的动态策略。
【2】死锁的预防(破坏死锁产生的4个必要条件来预防死锁):资源的互斥性是固有的
(1)破坏”请求与保持条件“:第一种方法静态分配,即每个进程在开始执行时就申请他所需要的全部资源。第二种是动态分配,即每个进程在申请所需要的资源时他本身不占用系统资源。
(2)破坏“不可剥夺”条件:一个进程不能获得所需要的全部资源时便处于等待状态,等待期间他占有的资源将被隐式的释放重新加入到系统的资源列表中,可以被其他的进程使用,而等待的进程只有重新获得自己原有的资源以及新申请的资源才可以重新启动,执行。
(3)破坏“循环等待”条件:资源有序分配,其基本思想是将系统中的所有资源顺序编号,将紧缺的、稀少的采用较大的编号,在申请资源时必须按照编号的顺序进行,一个进程只有获得较小编号的进程才能申请较大编号的进程。
7.Linux的一些命令?
查找文件(find)
创建文件夹(mkdir)
删除文件(rm)
查看进程的情况(ps)


网络:

8.三次握手的过程是什么?少了一次握手,会发生什么?
9.get和post的区别?
10.TCP和UDP的区别?
11.SMTP邮件发送协议用的TCP还是UDP?为什么?(我回答的是UDP,为什么是UDP??后来面试官给分析为什么是TCP)
TCP,邮件是不允许丢包的。

数据库:

12.两个表:t1(id,name)、t2(id,score,class)。打印名字为“李三”的class和score?
我一开始用的表连接查询,select t2.score,t2.class from t1 inner join t2 on t1.id=t2.id where t1.name="李三";
面试官:除了这个还有什么好一点的方法吗?
我:除了内连接、左连接、右连接吗?最后改成了隐式内连接,用where。(其实还是没有最优的)
面试官:这个返回值只在一个表中有数据,这样的话我们只在t2表中去查找效率更高。
我:select t2.score,t2.class from t2 where t2.id in (select id from t1 where name="李三");
13.数据库索引的优缺点?
【优点】:缩短数据的检索时间;加快表与表之间的连接;加快分组和排序。
【缺点】:创建和维护索引需要时间成本;创建和维护索引需要空间成本;降低表的增删改的效率,每次增删改都需要动态维护索引。
14.数据库底层的数据结构?(hash、B+树)
15.B+树的特点?B+树和二叉树的区别?

其他:

16.如何测试喝水的杯子?
17.问了项目?

更多模拟面试

全部评论

(6) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐