计算机基础 面试题

共 19 道 计算机基础 面试题。答案默认折叠,便于先自行作答。 1. 进程、线程、协程分别是什么概念? 难度:1 · 类型:QA 题目要点 进程 是独立的资源分配单位,每个进程有自己的内存和资源。 线程 是进程中的执行单元,线程之间共享进程的资源,但每个线程有自己的执行栈。 协程 是一种用户级的轻量级线程,通过程序控制的方式在任务之间进行切换,适合需要高效并发的场景。 参考答案 进程、线程和协程是计算机程序设计中不同层次的执行单元,各自有不同的概念和特点。以下是它们的详细解释: 1. 进程(Process) 概念:进程是操作系统分配资源的基本单位,是正在执行的程序的实例。每个进程都有自己的地址空间、内存、文件描述符等资源。 特点: 独立性:进程是相互独立的,互不干扰。一个进程的崩溃不会直接影响到其他进程。 资源分配:每个进程有独立的内存空间和系统资源。 开销大:由于需要独立的资源和内存,进程之间的切换(上下文切换)开销相对较大。 应用:常用于需要高隔离性和独立性的场景,如多进程服务器、操作系统服务等。 2. 线程(Thread) 概念:线程是进程中的执行单元,是程序执行的最小单位。一个进程可以包含多个线程,这些线程共享进程的资源(如内存)。 特点: 共享资源:线程之间共享进程的内存和资源,这使得线程间通信更加高效,但也带来了同步和竞争的问题。 开销小:线程的创建和销毁比进程要快,线程之间的切换也比进程切换更高效。 协作:线程之间可以进行协作,适合进行多任务处理。 应用:适用于需要并发执行的场景,如多线程应用程序、并行计算等。 3. 协程(Coroutine) 概念:协程是一种轻量级的线程,允许在执行过程中挂起和恢复,支持非抢占式的任务切换。协程可以在单线程中并发执行多个任务,但它们之间的切换由程序控制而不是操作系统。 特点: 协作式切换:协程通过显式的挂起和恢复操作进行切换,不需要操作系统的调度。 轻量级:协程的创建和切换开销非常小,通常比线程更高效。 适用场景:适用于需要大量并发操作但不需要多线程资源的场景,如异步编程、事件驱动编程等。 应用:广泛用于异步编程、游戏开发、网络编程等领域。许多现代编程语言(如 Python 的 asyncio、JavaScript 的 async/await)都支持协程。 2. 解释性语言和编译型语言有什么区别? 难度:2 · 类型:QA 题目要点 解释性语言:逐行解释执行,适合快速开发和跨平台,但执行速度较慢。 编译型语言:预先编译成机器码,执行速度较快,适合性能要求高的应用,但开发周期较长。 现代编程语言和环境往往结合这两种方式,以兼顾开发效率和执行性能。 参考答案 解释性语言和编译型语言是两种不同的编程语言执行方式,它们在代码执行、编译过程、执行效率等方面有显著差异。以下是它们的主要区别: 1. 解释性语言(Interpreted Languages) 定义:解释性语言的代码在运行时由解释器逐行解释和执行。解释器将源代码逐步翻译成机器码或中间代码,然后立即执行。 执行方式: 代码在每次执行时都会被解释器逐行翻译。 不需要预先编译成机器码。 优点: 开发和测试灵活性:支持即时运行和调试,便于快速开发和修改。 跨平台性:代码可以在不同平台上运行,只要有相应的解释器。 缺点: ...