
1.1 谈一谈软件工程的基本原理口语直答软件工程基本原理说白了就是别把写软件当成一个人闷头敲代码。它得按工程化办法来管。比如分阶段、做评审、控版本、控变更、选合适技术、结果能检查、人别堆太多、做完还要复盘改进。核心就一句话让成本、进度、质量别失控。追问 1为啥要分阶段和阶段评审因为软件太复杂一口气干完很容易翻车。分成需求、设计、编码、测试、维护这些阶段能把大问题拆小。每个阶段评审一下错误早发现返工就少也好控制进度。追问 2严格产品控制和配置管理是啥意思就是版本别乱、变更别乱、文档别乱。谁改了什么、为什么改、影响哪些地方都要能查。不然多人协作时很容易“你改一处我改一处最后全对不上”。追问 3现在都敏捷了这些原理还要吗还要。敏捷只是把周期缩短、迭代变快不是不要需求管理、测试、评审、版本控制。需求稳定就用阶段式需求变化快就用敏捷但底层工程原理还在。完善后的口语答案如果面试官问你可以这么说软件工程基本原理就是用工程办法管软件的全生命周期。需求、设计、编码、测试、维护分阶段来每阶段有评审版本、变更、文档要管住技术选合适的结果要能检查人别堆太多做完要持续改进。核心就是成本、进度、质量三者平衡。敏捷也一样只是迭代快这些事还得做。1.2 谈一谈自主访问控制 DAC 的基本思想口语直答DAC 就是“资源归谁谁说了算”。比如我的文件我想给张三读、给李四写我就能授权。它很灵活但安全性比较依赖人容易权限给大了、忘了收、到处扩散。追问 1DAC 和 MAC 有啥区别DAC 是自主的资源拥有者可以决定给谁权限。MAC 是强制的系统按安全标签和规则统一控制用户不能随便改。DAC 灵活但弱一点MAC 严格但管理麻烦实际常配合用。追问 2DAC 一般怎么实现常见有访问控制矩阵、访问控制列表 ACL、能力表。操作系统里的文件权限、共享权限、用户组权限很多都是 DAC 思想。追问 3DAC 的主要风险和怎么改进风险就是权限过大、权限扩散、配置错了、账号被滥用、离职账号没回收。改进办法最小权限、定期审计、权限回收、按角色分组重要系统再加 RBAC 或 MAC。完善后的口语答案DAC 的核心就是“主人自主授权”。优点是灵活、好用适合一般企业环境。缺点是安全边界靠人和配置所以得配审计、最小权限和强制访问控制来补。面试时说DAC 不是不好是不能单靠它。1.3 何为网络适配器其作用是什么1.3.1 回答口语直答网络适配器就是网卡也叫 NIC。你可以把它理解成电脑连网络的一扇门。它负责把电脑的数据发出去、把网络的数据收回来还带着 MAC 地址做帧的封装、解封装、差错检测跟 CPU 通过中断、DMA 打交道。追问 1网卡和猫、交换机、路由器有啥区别网卡在电脑里面负责电脑接入网络。猫是调制解调器负责信号转换。交换机在局域网里转发数据。路由器负责不同网络之间互联。各干各的活。追问 2有线网卡、无线网卡、虚拟网卡有啥区别有线网卡接网线稳定高速。无线网卡接 Wi-Fi灵活但受信号影响。虚拟网卡是软件模拟出来的比如 lo、VMware、Docker 里的 veth用来本机通信、虚拟化和容器网络。追问 3网卡出问题怎么排查先看系统认没认到驱动正不正常网卡启没启用。再看 IP、网关、DNS 对不对。然后看网线、信号、交换机口。命令可以用 ipconfig、ifconfig、ip a、ping、tracert实在不行抓包。完善后的口语答案网络适配器就是网卡是电脑和网络之间的接口。它管收发数据帧、MAC 地址、差错检测还跟 CPU 交互。有线、无线、虚拟网卡都是这个角色。排查问题时从“认没认到、驱没驱动、启没启用、IP 对不对、线路通不通”一步步看。1.3.2 附通过 Python 获取网络适配器信息口语说明用 Python 查网卡最省事的是 psutil。它能列出网卡名、IP、子网掩码、MAC、状态、速率。想只看某张卡就按名字过滤。先装bashpip install psutil代码pythonimport socketimport psutildef show_adapters():addrs psutil.net_if_addrs()stats psutil.net_if_stats()for name, addr_list in addrs.items():st stats.get(name)status 开着 if st and st.isup else 没开/断了speed f{st.speed} Mbps if st and st.speed 0 else 速度未知print(f\n网卡{name})print(f 状态{status})print(f 速率{speed})for addr in addr_list:if addr.family socket.AF_INET:print(f IPv4{addr.address})print(f 子网掩码{addr.netmask})elif addr.family socket.AF_INET6:print(f IPv6{addr.address})elif addr.family psutil.AF_LINK:print(f MAC{addr.address})if __name__ __main__:show_adapters()标准库简单版pythonimport socketimport uuidhostname socket.gethostname()print(主机名, hostname)print(IP 信息, socket.gethostbyname_ex(hostname))mac_int uuid.getnode()mac :.join(f{(mac_int i) 0xff:02x} for i in range(40, -1, -8))print(MAC, mac)追问 1为啥推荐 psutil因为它跨平台Windows、Linux、macOS 都能用拿网卡地址、状态、速率比较方便不用自己写一堆系统命令解析。追问 2只想看某一张网卡怎么办可以加判断比如 if name WLAN: 或 if name eth0:。也可以直接取 psutil.net_if_addrs()[WLAN]。追问 3这些信息能干嘛排查 IP 冲突、确认 MAC、做资产盘点、监控网络状态、写自动化脚本都用得上。完善后的口语答案用 Python 查网卡最省事就是 psutil。它能列出网卡名、IP、掩码、MAC、状态、速率。想只看某张卡就按名字过滤。标准库也能拿主机名、IP、MAC但信息少一些。这个脚本适合做网络排查和资产盘点的小工具。1.4 谈一谈摩尔定律的主要内容口语直答摩尔定律就是说芯片上能塞的晶体管大概每 18 到 24 个月翻一番。结果就是性能上去了成本下来了。它不是物理定律是经验规律也是整个 IT 产业的节奏。追问 1摩尔定律的准确说法是啥最早 1965 年摩尔说大约每年翻番1975 年修正成大约每两年翻番。业界常说的是 18 到 24 个月翻一番强调集成度、性能和成本的变化趋势。追问 2摩尔定律会失效吗会放缓。制程越来越接近物理极限有量子隧穿、功耗墙、散热、成本问题。现在靠 3D 堆叠、Chiplet、异构集成、新材料、专用加速器继续往前推。追问 3摩尔定律对软件有啥影响以前软件经常靠硬件变快现在不能老这么想。更得关注性能优化、并行计算、能效、云原生、算法效率、专用硬件加速。不然硬件红利没那么好吃了。完善后的口语答案摩尔定律就是芯片晶体管大约一年半到两年翻一倍性能涨、成本降。它不是物理定律是经验规律。现在制程难了速度慢了但靠 3D 堆叠、Chiplet、异构集成接着拱。对软件来说别老等硬件变快得优化算法、并行、能效和架构。1.5 谈一谈虚拟局域网的优点结构化开发的优缺点1.5.1 虚拟局域网 VLAN 的优点口语直答VLAN 就是在交换机上逻辑分网不是按办公室位置分而是按部门、项目、安全等级分。优点就是隔离广播、提高性能、增强安全、灵活分组、简化管理、还省钱。追问 1VLAN 怎么划分可以按端口、MAC 地址、协议、子网、策略来分。跨交换机常用 Trunk 和 802.1Q 标签。追问 2VLAN 的优点具体体现在哪广播少了广播风暴不容易扩散不同 VLAN 默认不能直接通信安全隔离好按部门或项目分组不受物理位置限制搬家、调整、上 QoS 策略都方便。追问 3VLAN 有啥局限跨 VLAN 通信要三层路由配置不一致容易出故障Trunk 和本征 VLAN 配不好有 VLAN 跳变风险大规模 VLAN 管理也复杂。完善后的口语答案VLAN 的核心价值就是“逻辑隔离、灵活管理、安全和性能兼顾”。它把一个大局域网切成多个小网广播少了安全好了人搬来搬去也不用重新布线。但它不是万能的跨 VLAN 要路由配置要规范不然也容易出问题。1.5.2 结构化开发的优缺点口语直答结构化开发就是自顶向下、逐步求精、模块化、结构化编程还有文档规范。优点阶段清楚、质量可控、好懂好维护。缺点需求一变就难受周期长文档多用户反馈晚。追问 1结构化开发的核心工具是啥数据流图 DFD、数据字典、判定表、判定树、ER 图、结构图这些。它强调功能分解和过程抽象。追问 2结构化和面向对象有啥区别结构化是以功能和过程为中心。面向对象是以对象、类、封装、继承、多态为中心。复杂、易变、交互强的系统面向对象更合适。追问 3结构化开发适合啥场景适合需求稳定、数据处理明确、流程固定的项目比如传统银行、政务、嵌入式控制。需求变化快就上敏捷和面向对象或者混着用。完善后的口语答案结构化开发就是自顶向下、一步步拆、模块化、流程清楚、文档规范。好处是质量可控、好懂好维护。坏处是需求一变就难受周期长文档多用户看到东西晚。所以需求稳的适合需求变得快的就上敏捷/OOP或者混着用。1.6 开放类题目你觉得你的优势在哪里口语直答我的优势不是“我很努力”这种空话而是岗位需要的能力、我能拿出的成果、还有我跟别人不一样的地方。比如学习快、能结构化解决问题、落地执行强、沟通协作还行。追问 1怎么定义“优势”优势 目标岗位需要的能力 可证明的成果 你跟别人不同的地方。比如学习能力、沟通协作、工程实践、抗压能力、业务理解都算。追问 2怎么证明你的优势用 STAR 法则当时啥情况、任务是什么、我做了什么、结果怎么样。最好有数字。比如“接口响应从 2 秒降到 300 毫秒”“独立完成某模块并上线”“竞赛获奖”“文档被团队复用”。追问 3怎么把优势转成团队价值还持续提升把优势用在团队痛点上比如提升效率、降低故障、改善协作。然后定期复盘听反馈补短板。形成“优势—成果—迭代”的循环。完善后的口语答案面试问优势别只说“我努力”。要说岗位需要啥我有啥能拿啥证明。比如我学习快、能结构化解决问题、落地执行强。用 STAR 讲当时啥情况、任务啥、我做了啥、结果咋样最好有数字。然后说我能帮团队解决啥问题最后说我知道自己短板会继续补。如果是我作为 AI 助手我会说我的优势是信息整合、结构化表达、快速给代码示例短板是没真实项目经验所以更适合当辅助工具。