实习面经摘录(九)

来自网络,供个人学习 某讯 两个

先完成后完美

计算机网络:

1.OSI七层,TCP/IP四层

物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

2.TCP/IP四层及对应协议

网络接口层,网络层(IP),传输层(TCP/UDP),应用层(HTTP,DNS,SMTP)

操作系统:

1.进程和线程区别

  • 进程:资源分配的最小单位。拥有独立的内存空间(堆、栈、数据段),进程间切换开销大。
  • 线程:CPU调度的最小单位。共享所属进程的内存资源(堆、方法区),拥有独立的栈和程序计数器。线程间切换开销小。

2.原子类和CAS

基于硬件级别的 CAS (Compare-And-Swap) 指令。CAS 本身是一条 CPU 指令,不可分割,不会被线程调度打断。

ABA 问题 :值从 A 变 B 又变回 A,CAS 会认为没变过。解决方法是加版本号(AtomicStampedReference)。

3.页面淘汰算法

  1. OPT (最佳置换):理论算法,淘汰未来最久不用的(无法实现,用于衡量标准)。
  2. FIFO (先进先出):淘汰最早进入的(可能出现 Belady 异常)。
  3. LRU (最近最少使用):淘汰最近一段时间最久未使用的(常用,效果好)。
  4. Clock (时钟置换):LRU 的近似实现,性能好,开销小。

mysql:

1.mysql如何实现持久性

  • 通过 Redo Log (重做日志) 实现。
  • 机制:事务修改数据时,先写内存(Buffer Pool),同时写 Redo Log(顺序写磁盘)。即使宕机,重启后可根据 Redo Log 恢复未刷盘的数据。

2WAL技术,为撒先写日志再写磁盘

顺序写日志:Redo Log 是追加写入,顺序IO,速度极快,且日志文件小,容易落盘。

redis:

java八股:

1.基本数据类型,容器

整数型、浮点型、字符型、布尔型

collection List(有序,可重复) set(无序(部分有序)、不可重复)

2.arrayList 和LinkedList结构 场景

arraylist基于动态数组,支持随机访问,增删慢,扩容时有拷贝开销;适用于读多写少,频繁访问的场景

LinkedList基于双向链表,需要遍历访问,增删快;写多读少

3hashmap底层原理

下篇写下

4.二维数组存储和按行遍历还是按列遍历性能高

  • 存储 :Java中的二维数组实际上是**"数组的数组"** 。int[][] arr 是一个引用,指向一个一维数组,该数组的每个元素又是一个指向另一块内存区域的一维数组的引用。内存不一定连续
  • 遍历性能按行遍历更快
    • 原因:虽然每一行内部的内存是连续的,但行与行之间可能不连续。按行遍历(外层循环行,内层循环列)符合局部性原理(Spatial Locality),CPU缓存命中率更高。按列遍历会导致频繁在不同行的内存块之间跳转,缓存失效(Cache Miss)严重。

5.怎么解决线程竞争,synchorized和reentranlock区别,哪个性能更高

  1. ReentrantLock:显式锁,功能更灵活。
  2. Atomic 原子类 :如 AtomicInteger,基于 CAS (Compare-And-Swap)。
  3. ThreadLocal:线程隔离,每个线程拥有一份独立副本(如果不需共享结果)。
  4. 并发容器 :如 ConcurrentHashMap
特性 synchronized ReentrantLock
层面 JVM 关键字 (内置锁) API 类 (代码级锁)
释放 自动释放 (代码结束或异常) 必须在 finally 中手动 unlock()
灵活性 较低 高 (可中断、超时尝试、公平/非公平)
条件变量 配合 wait/notify 配合 Condition (可绑定多个条件)
性能 JDK 1.6 优化后两者性能接近 高竞争下略优,低竞争下差别不大
  • 非公平 vs 公平:默认都是非公平锁(性能更好)。ReentrantLock 构造函数可指定为公平锁。
  • 性能哪个好 :在高并发激烈竞争下,ReentrantLock 通常略好;但在一般场景下,由于 JVM 对 synchronized 做了大量优化(偏向锁、轻量级锁、重量级锁升级),两者差异很小。首选 synchronized 因为不易出错(自动释放)

项目难点:

ai:

1.有了解过openclaw吗,底层是怎么做的

感知->规划(plan)->行动(tools,skills)->记忆(memory)->反思(reflection)

感知:多模态识别(ocr,whisper)、全渠道接入

规划:LLM 和system prompt

行动:tools skills

记忆:短期记忆 长期记忆

反思

OpenClaw 的底层本质是一个**"基于大模型的任务操作系统"** 。它利用 LLM 作为CPU (逻辑计算),利用 Tool/Skill 作为外设驱动 ,利用向量数据库作为硬盘(记忆),将自然语言直接编译为系统动作。

对于开发者而言,学习 OpenClaw 的架构(特别是它的Tool Calling 协议记忆管理机制沙箱执行策略)是理解下一代 AI Agent 开发的关键。

相关推荐
炽烈小老头8 小时前
【每天学习一点算法 2026/04/17】多数元素
数据结构·学习·算法
2501_916007478 小时前
从零开始学习iOS开发:Xcode环境配置与项目创建完整指南
ide·vscode·学习·ios·个人开发·xcode·敏捷流程
星幻元宇VR8 小时前
VR动感电动车|以沉浸体验推动交通安全科普新方式
人工智能·科技·学习·安全·生活·vr
jiayong239 小时前
第 25 课:给学习笔记页加上搜索、标签筛选和 URL 同步
开发语言·前端·javascript·vue.js·学习
YuanDaima204810 小时前
矩阵基础原理与题目说明
人工智能·笔记·python·学习·线性代数·矩阵
zhangjikuan8910 小时前
RunLoop学习记录
学习·macos·cocoa
夜瞬10 小时前
NLP学习笔记08:循环神经网络(RNN)——从基础 RNN 到 LSTM 与 GRU
rnn·学习·自然语言处理
教育知暖意10 小时前
广州编程机构选择指南:入门到进阶实用参考
学习
MegaDataFlowers10 小时前
基于Gitee帮助中心学习Gitee Go
学习·gitee
鱼鳞_10 小时前
Java学习笔记_Day33(高级流)
java·笔记·学习