找工作面试笔试题复盘/笔记/错题

【2021】小米秋招软件开发方向第二场笔试

下面协议中属于应用层协议的是( )
答案:SMTP(简单邮件传输协议)、POP3(邮局协议版本3)、FTP(文件传输协议)、TELNET(远程登录系统)、HTTP(超文本传输协议)、SNMP(简单网络管理协议)

下列排序算法中,最好情况和最坏情况的时间复杂度相同的是?(堆排序)

同一个进程的不同线程,哪个是不能共享的?
答案:栈

解析:

链接:https://www.nowcoder.com/questionTerminal/1ecf3ca506d74384be091b1d6a6d1cb9
来源:牛客网

线程共享的进程环境包括:
进程代码段
进程的公有资源(如全局变量,利用这些共享的数据,线程很容易的实现相互之间的通信)
进程打开的文件描述符
消息队列
信号的处理器
进程的当前目录
进程用户ID
进程组ID
线程独占资源:
线程ID
寄存器组的值
用户栈、内核栈(在一个进程的线程共享堆区(heap))
错误返回码
线程的信号屏蔽码
线程的优先级

链接:https://www.nowcoder.com/questionTerminal/1ecf3ca506d74384be091b1d6a6d1cb9
来源:牛客网

一个进程中的所有线程共享该进程的地址空间,但它们有各自独立的(/私有的)栈(stack),堆(heap)的分配与栈有所不同,一般是一个进程有一个C运行时堆,这个堆为本进程中所有线程共享,windows进程还有所谓进程默认堆,用户也可以创建自己的堆。
用操作系统术语,线程切换的时候实际上切换的是一个可以称之为线程控制块的结构(TCB?),里面保存所有将来用于恢复线程环境必须的信息,包括所有必须保存的寄存器集,线程的状态等。

堆: 是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。

栈:是个线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈互相独立,因此,栈是 thread safe的。操作系统在切换线程的时候会自动的切换栈,就是切换 SS/ESP寄存器。栈空间不需要在高级语言里面显式的分配和释放

将递归算法转换为非递归算法, 通常需要使用( 栈)

下列有关软链接表述正确的是? ( 保存了其代表的文件的绝对路径,是另一种文件,在硬盘上有独立的区块,访问时替代自身路径)

long 8个字节 float 4个字节

在java中,要使某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以(让该类不使用任何关键字 )

有关java静态初始化块说法正确的是?(ABC)
A.无法直接调用静态初始化块
B.在创建第一个实例前,将自动调用静态初始化块来初始化
C.静态初始化块没有访问修饰符和参数

你可能感兴趣的:(软件开发工程师笔试,软件开发工程师)