实习面经摘录(九)

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

先完成后完美

计算机网络:

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 开发的关键。

相关推荐
MartinYeung51 小时前
[论文学习]隐私保护联邦特徵选择与差分隐私的的工程实践框架
学习
qeen872 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
Flandern11112 小时前
Pull Requests(PR)
学习·github·pr
nashane3 小时前
HarmonyOS 6学习:JsCrash“闪退”法医指南——从FaultLog堆栈还原崩溃现场的终极手册
学习·华为·harmonyos
for_ever_love__3 小时前
UI学习:UICollectionView瀑布流
学习·ui·ios·objective-c·cocoa
AOwhisky3 小时前
MySQL 学习笔记(第六期):MySQL 备份与恢复
运维·数据库·笔记·学习·mysql·云计算
_李小白4 小时前
【android opencv学习笔记】Day 32:直线检测之霍夫变换
android·opencv·学习
提子拌饭1335 小时前
Column 嵌套布局:多级 Column 实现复杂纵向结构——鸿蒙 HarmonyOS ArkTS 原生学习应用
学习·华为·harmonyos·鸿蒙·鸿蒙系统
xqqxqxxq6 小时前
树结构技术学习笔记
数据结构·笔记·学习
十月的皮皮7 小时前
C语言学习笔记202606008- 三角形判断(3种方法)
c语言·笔记·学习