
软件开发面经
文章平均质量分 93
不懂就多学学
这个作者很懒,什么都没留下…
展开
-
软件开发相关面经8——操作系统篇
进程与线程的区别和联系(重点) 1.进程是对运行时程序的封装,是**系统进行资源分配和调度的基本单元,而线程是进程的子任务,是CPU分配和调度的基本单元。**2. 一个进程可以有多个线程,但是一个线程只能属于一个进程。3. 进程的创建需要系统分配内存和CPU,文件句柄等资源,销毁时也要进行相应的回收,所以进程的管理开销很大;但是线程的管理开销则很小。4. 进程之间不会相互影响;而一个线程崩溃会导致进程崩溃,从而影响同个进程里面的其他线程。联系: 进程与线程之间的关系:线程是存在进程的内部,一个进程原创 2021-09-07 14:50:13 · 566 阅读 · 0 评论 -
软件开发相关面经7——Linux
Linux的I/O模型介绍以及同步异步阻塞非阻塞的区别(超级重要) IO两个阶段内核从IO设备读数据进程从内核复制数据内核从设备读取数据到内核空间的缓冲区内核空间复制回用户空间进程缓冲区阶段阻塞:调用IO操作的时候,如果缓冲区空或者满了,调用的进程或者线程就会处于阻塞状态直到IO可用并完成数据拷贝。非阻塞:调用IO操作的时候,内核会马上返回结果,如果IO不可用,会返回错误,这种方式下进程需要不断轮询直到IO可用为止,但是当进程从内核拷贝数据时是阻塞的。IO多路复用就是同时监听多个描述符,一原创 2021-09-06 22:17:54 · 261 阅读 · 1 评论 -
软件开发相关面经6——数据库篇
1、事务隔离性的实现——常见的并发控制技术并发控制技术是实现事务隔离性以及不同隔离级别的关键,实现方式有很多,按照其对可能冲突的操作采取的不同策略可以分为乐观并发控制和悲观并发控制两大类。乐观并发控制:对于并发执行可能冲突的操作,假定其不会真的冲突,允许并发执行,直到真正发生冲突时才去解决冲突,比如让事务回滚。悲观并发控制:对于并发执行可能冲突的操作,假定其必定发生冲突,通过让事务等待(锁)或者中止(时间戳排序)的方式使并行的操作串行执行。2、数据库的范式第一范式(确保每列保持原子性)第一范原创 2021-09-06 20:40:21 · 278 阅读 · 0 评论 -
软件开发相关面经5——数据库篇
1、关系型和非关系型数据库的区别(低频)关系型数据库优点复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询,如join。最大优势:保持数据的一致性(事务处理) 事务支持使得对于安全性能很高的数据访问要求得以实现。关系型数据库把所有的数据都通过行和列的二元表现形式表示出来。由于以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处)缺点:1.扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。2.不擅长如下处理1). 大量数据的写入处理原创 2021-09-06 17:45:55 · 839 阅读 · 0 评论 -
软件开发相关面经4——计算机网络篇
1、单条记录高并发访问的优化服务器端:使用缓存,如redis等使用分布式架构进行处理将静态页面和静态资源存储在静态资源服务器,需要处理的数据使用服务器进行计算后返回将静态资源尽可能在客户端进行缓存采用ngnix进行负载均衡 (nginx读作恩静埃克斯 = Engine X)数据库端:数据库采用主从赋值,读写分离措施建立适当的索引分库分表2、介绍一下ping的过程,分别用到了哪些协议ping 程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连原创 2021-09-06 11:45:00 · 255 阅读 · 0 评论 -
软件开发相关面经3——计算机网络篇
1、TCP和UDP的区别TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP(User Data Protocol,用户数据报协议)是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传原创 2021-09-06 10:53:46 · 464 阅读 · 0 评论 -
软件开发相关面经2——计算机网络篇
1、建立TCP服务器的各个系统调用建立TCP服务器连接的过程中主要通过以下系统调用序列来获取某些函数,这些系统调用主要包括:socket(),bind(),listen(),accept(),send()和 recv()。见:https://blog.youkuaiyun.com/qq_37964547/article/details/814296272、说明socket网络编程有哪些系统调用?其中close是一次就能直接关闭的吗,半关闭状态是怎么产生的?socket() 创建套接字bind() 绑定本.原创 2021-09-03 13:34:02 · 237 阅读 · 0 评论 -
软件开发相关面经1
文章目录一、堆和栈有什么区别?二、重载和重写的区别?面试时,问:重载(Overload)和重写(Override)的区别?一、堆和栈有什么区别? 栈内存:栈内存首先是一片内存区域,存储的都是局部变量,凡是定义在方法中的都是局部变量(方法外的是全局变量),for循环内部定义的也是局部变量,是先加载函数才能进行局部变量的定义,所以方法先进栈,然后再定义变量,变量有自己的作用域,一旦离开作用域,变量就会被释放。栈内存的更新速度很快,因为局部变量的生命周期都很短。 堆内存:存储的是数组和对象(其实数组就是原创 2021-09-03 01:46:15 · 625 阅读 · 2 评论