架构师面试(二):计算机编程基础

问题

(该题目考察计算机编程基础,看看大家在学生期间有没有认真上课)

下面说法正确的有哪几项?

A、协程在创建、切换和销毁时,操作系统都是无法感知的;

B、理论上讲,用户应用程序是可以脱离操作系统运行起来的;

C、Linux 下的 epoll 是同步 IO 模型,Windows下的 IOCP 是异步 IO 模型;

D、在 TCP 网络编程中,相对于单线程来说,多个线程同时写 socket 效率是更高的。

解析

A选项:协程是轻量级的用户级线程,它工作在用户态;协程的创建、切换和销毁,都不会进行系统调用,操作系统都是无感知的。

B选项:操作系统存在的意义有两个,一是对运行中的进程进行综合治理,二是为用户应用程序提供访问底层硬件的 API 接口;但是,用户应用程序并不是完全依赖操作系统的;没有操作系统的环境中,用户应用程序仍然可以正常运行起来。那怎么运行没有操作系统的应用程序呢?开机后,硬件加载 BIOS 程序(这是硬件厂商规定的),BIOS 程序的最后一条指令往往是 操作系统程序在硬盘中的地址,把这个地址修改成用户应用程序在硬盘中的地址即可。

C选项:Linux 下的 epoll 是 同步非阻塞的 IO 模型,即 IO 多路复用模型中的一种;Windows 下的 IOCP (俗称 完成端口)是 纯异步的 IO 模型。

D选项:socket 在 Linux 中的本质 是一个 文件描述符,即 fd,我们把它看做一个文件即可;TCP 是流式传输协议,在基于 TCP 的网络编程中,特别需要注意 "粘包" 和 "分包" 问题,也就是说线程在写 socket 时,必须要确保写的数据包是完整的;如果有多个线程同时写 socket 时,必须要加锁保证线程的串行化写入;而这个时候,往往单线程写 socket,效率是最好的。

答案

ABC

相关推荐
棕生30 分钟前
架构师面试(三十二):注册中心数据结构
注册中心·架构师面试·注册中心数据结构·服务与节点映射·订阅关系映射·被订阅关系映射·变更通知流程
LUCIAZZZ4 小时前
KRaft面试思路引导
java·spring boot·算法·面试·kafka·操作系统·raft
易保山6 小时前
MIT6.S081 - Lab9 File Systems(文件系统)
linux·操作系统·c
Nu1111 小时前
解决 mbp14/16 的 miniled 屏幕刺眼发黄问题
操作系统·mac
诸葛悠闲13 小时前
进程与线程:02 多进程图像
操作系统
氦客1 天前
kotlin知识体系(六) : Flow核心概念与与操作符指南
android·开发语言·kotlin·协程·flow·冷流·热流
氦客1 天前
kotlin知识体系(五) :Android 协程全解析,从作用域到异常处理的全面指南
android·开发语言·kotlin·协程·coroutine·suspend·functions
小墙程序员1 天前
《程序是怎么跑起来的》读书笔记
操作系统
圣火喵喵教1 天前
程序员的自我修养 - 第三章 目标文件里面有什么
linux·操作系统
博睿谷IT99_5 天前
华为HCIE-openEuler认证:能否成为国产操作系统领域的技术稀缺人才?
华为·开源·操作系统·华为认证·hcie·openeuler