今日八股:一天三轮九题全对,唯一的坑藏在 el-table 里

今日八股:一天三轮九题全对,唯一的坑藏在 el-table 里

今天的练习

今天一天刷了三轮基础八股:上午 Java 面向对象、下午 Vue/ES6、傍晚数据库+网络,一共九道题。结论层面全部答对,唯一真正的"坑"不在知识本身,而在一个 Element 组件的底层行为上——el-table 的列为什么只能用 v-if 隐藏。

Java:面向对象三大特性

三大特性是什么?封装的好处?重载和重写的区别?

答:封装是把敏感字段隐藏起来只在类内使用,只暴露想暴露的部分,有点类似 JS 闭包,比如用户类的密码、身份证可以设成 final 和 private 不往外暴露;继承用 extends 拿到父类 protected/public 的属性和方法;多态是同一行为子类表现出不同形态。重载是同名不同参数(result 类的 success 方法),重写是重新定义父类方法的逻辑,参数要求跟父类一样。

复盘

  • 概念混了:把 final 当成访问控制。真正"藏"字段的是 private,final 是"不可变/不可继承"——密码字段用 private + 不提供 getter 才是封装,加 final 只是让它不可重新赋值,两码事。
  • 用词不准:重写要求的是方法签名相同(方法名+参数列表),返回类型相同或是其子类,访问权限不能比父类更窄,建议加 @Override 让编译器检查;"属性跟父类一样"的说法不对,属性(成员变量)没有重写一说。
  • 答对的:闭包类比封装思路可以;result 类重载的例子来自真实项目,面试里很加分。

一句话记住

private 管看不看得到,final 管改不改得了——封装靠 private,别拉 final 陪跑。

Vue:v-if / v-show 与 ref / reactive

v-if 和 v-show 的区别?ref 和 reactive 的区别?let/const/var 有什么区别?

答:v-if 是直接不渲染这块区域的 DOM,v-show 相当于加了 display:none;v-if 适合不频繁变动的地方,v-show 适合频繁切换显示状态的地方,但 el-table 要隐藏只能用 v-if,因为解析 v-show 之前 el-table 已经加载完成。ref 是把基本类型包装成含 value 属性的对象,reactive 用来定义引用类型,且定义之后不能直接替换。var 定义的是全局变量、存在变量提升、可重复声明,let/const 是 ES6 提出的作用域变量。

复盘

  • 原因说反了(今天唯一的翻车点):el-table 隐藏必须用 v-if,不是"加载时序"问题——真实原因是 el-table-column 这个组件本身不渲染 DOM 节点,只是把列配置注册给父级 table。v-show 靠给元素加 display:none 生效,可它连可操作的元素都找不到,自然失效;v-if 是真渲染/销毁,列配置能更新。
  • 作用域说错:var 不是"全局变量",是函数作用域——在函数里声明就只在那个函数里可见。let/const 才是块级作用域({} 内)。
  • 补充一个坑:const 只是绑定不可换(不能重新赋值),对象内容照样能改,const arr = []; arr.push(1) 完全合法。
  • 答对的:ref 包装 value 对象、reactive 不能整体替换、v-if/v-show 的性能取舍,细节全对。

一句话记住

v-show 的本质是"给元素改样式"——没有自己 DOM 的组件(如 el-table-column)它管不了,只能 v-if 真渲染。

数据库 + 网络:索引、ACID、三次握手

什么是索引?ACID 四个特性?TCP 三次握手的过程?

答:索引像一本书的目录,好处是方便快速查找、加快排序去重,坏处是增删改操作会变慢、索引太多会更慢。ACID:原子性是事务里的操作要么全部成功要么全部不执行;一致性是事务前后数据库从一个合法状态变到另一个合法状态;隔离性是并发事务互不干扰;持久性是一旦提交就永久保存,宕机也不丢。三次握手:客户端发 SYN=1 seq=x 请求建连,服务端回 SYN=1 ACK=1 seq=y ack=x+1,客户端再回 ACK=1 seq=x+1 ack=y+1,确认双方都能收发数据。

复盘

  • 小瑕疵:"索引加快去重"不太准确——UNIQUE 唯一索引确实约束唯一性,但普通索引不防重复;加快排序是对的(索引本身有序)。
  • 可以补的:索引底层是 B+ 树,这是面试必追问点;持久性靠 redo log"先写日志再刷盘"实现。
  • 可以补的:三次握手常被追问"为什么两次不行"——服务端无法确认客户端能收到自己的消息,且历史(旧的)SYN 报文会导致错误建连。
  • 答对的:ACID 表格和握手报文(seq/ack 递推)写得完全正确,这个细节水平超出基础题的预期。

一句话记住

索引=B+ 树目录;ACID=全成、合法、隔离、不丢;三次握手=互相确认"你能听到我说话",两次不够。

结论都记得住,"为什么"层面才会露馅——背结论更要懂原理。

一天三场刷下来,最大的收获是看清了一个规律:基础概念的"是什么"基本没问题,翻车全翻在"为什么"上,比如 el-table 那道,结论对、原因错。

← 返回文章列表