<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>计算机基础 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/</link><description>Recent content in 计算机基础 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><atom:link href="https://amatsuzero.github.io/LastStand/tags/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/index.xml" rel="self" type="application/rss+xml"/><item><title>计算机基础 面试题</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/interview-questions/tag-21-e009ecee/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/interview-questions/tag-21-e009ecee/</guid><description>&lt;p&gt;共 19 道 计算机基础 面试题。答案默认折叠，便于先自行作答。&lt;/p&gt;
&lt;h2 id="question-566e4e90-c81e-4fe0-82bc-27ca19b835e7"&gt;1. 进程、线程、协程分别是什么概念？&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;难度：1 · 类型：QA&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="题目要点"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;进程&lt;/strong&gt; 是独立的资源分配单位，每个进程有自己的内存和资源。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;线程&lt;/strong&gt; 是进程中的执行单元，线程之间共享进程的资源，但每个线程有自己的执行栈。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;协程&lt;/strong&gt; 是一种用户级的轻量级线程，通过程序控制的方式在任务之间进行切换，适合需要高效并发的场景。&lt;/li&gt;
&lt;/ul&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;进程、线程和协程是计算机程序设计中不同层次的执行单元，各自有不同的概念和特点。以下是它们的详细解释：&lt;/p&gt;
&lt;h3 id="1-进程process"&gt;&lt;strong&gt;1. 进程（Process）&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;概念&lt;/strong&gt;：进程是操作系统分配资源的基本单位，是正在执行的程序的实例。每个进程都有自己的地址空间、内存、文件描述符等资源。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;独立性&lt;/strong&gt;：进程是相互独立的，互不干扰。一个进程的崩溃不会直接影响到其他进程。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;资源分配&lt;/strong&gt;：每个进程有独立的内存空间和系统资源。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开销大&lt;/strong&gt;：由于需要独立的资源和内存，进程之间的切换（上下文切换）开销相对较大。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;应用&lt;/strong&gt;：常用于需要高隔离性和独立性的场景，如多进程服务器、操作系统服务等。&lt;/p&gt;
&lt;h3 id="2-线程thread"&gt;&lt;strong&gt;2. 线程（Thread）&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;概念&lt;/strong&gt;：线程是进程中的执行单元，是程序执行的最小单位。一个进程可以包含多个线程，这些线程共享进程的资源（如内存）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;共享资源&lt;/strong&gt;：线程之间共享进程的内存和资源，这使得线程间通信更加高效，但也带来了同步和竞争的问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开销小&lt;/strong&gt;：线程的创建和销毁比进程要快，线程之间的切换也比进程切换更高效。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;协作&lt;/strong&gt;：线程之间可以进行协作，适合进行多任务处理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;应用&lt;/strong&gt;：适用于需要并发执行的场景，如多线程应用程序、并行计算等。&lt;/p&gt;
&lt;h3 id="3-协程coroutine"&gt;&lt;strong&gt;3. 协程（Coroutine）&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;概念&lt;/strong&gt;：协程是一种轻量级的线程，允许在执行过程中挂起和恢复，支持非抢占式的任务切换。协程可以在单线程中并发执行多个任务，但它们之间的切换由程序控制而不是操作系统。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;协作式切换&lt;/strong&gt;：协程通过显式的挂起和恢复操作进行切换，不需要操作系统的调度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;轻量级&lt;/strong&gt;：协程的创建和切换开销非常小，通常比线程更高效。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：适用于需要大量并发操作但不需要多线程资源的场景，如异步编程、事件驱动编程等。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;应用&lt;/strong&gt;：广泛用于异步编程、游戏开发、网络编程等领域。许多现代编程语言（如 Python 的 &lt;code&gt;asyncio&lt;/code&gt;、JavaScript 的 &lt;code&gt;async/await&lt;/code&gt;）都支持协程。&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="question-5296602e-3318-4ad0-81aa-023ab8454343"&gt;2. 解释性语言和编译型语言有什么区别？&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;难度：2 · 类型：QA&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="题目要点-1"&gt;题目要点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;解释性语言&lt;/strong&gt;：逐行解释执行，适合快速开发和跨平台，但执行速度较慢。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;编译型语言&lt;/strong&gt;：预先编译成机器码，执行速度较快，适合性能要求高的应用，但开发周期较长。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;现代编程语言和环境往往结合这两种方式，以兼顾开发效率和执行性能。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;参考答案&lt;/summary&gt;
&lt;p&gt;解释性语言和编译型语言是两种不同的编程语言执行方式，它们在代码执行、编译过程、执行效率等方面有显著差异。以下是它们的主要区别：&lt;/p&gt;
&lt;h3 id="1-解释性语言interpreted-languages"&gt;1. &lt;strong&gt;解释性语言（Interpreted Languages）&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;定义&lt;/strong&gt;：解释性语言的代码在运行时由解释器逐行解释和执行。解释器将源代码逐步翻译成机器码或中间代码，然后立即执行。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;执行方式&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码在每次执行时都会被解释器逐行翻译。&lt;/li&gt;
&lt;li&gt;不需要预先编译成机器码。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;优点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;开发和测试灵活性&lt;/strong&gt;：支持即时运行和调试，便于快速开发和修改。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨平台性&lt;/strong&gt;：代码可以在不同平台上运行，只要有相应的解释器。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;缺点&lt;/strong&gt;：&lt;/p&gt;</description></item></channel></rss>