一、场景题
1.数据库delete truncate drop的区别
delete是行级别删除、truncate会重置自增主键清空数据表、drop是释放存储空间,更彻底地摧毁结构
delete之后自增主键不释放,继续增加
2.mysql执行一条语句经过的组件
连接器、解析器、优化器、执行器------到存储引擎执行
连接器处理和客户端连接
优化器比如去优化索引
3.Inner联结
联结是查两个表匹配的数据,还有左联结和右联结,其中分别代表左右表是主表
默认的联结只返回在两个表严格匹配的交集,左联结和右联结对于主表的都显示,右表匹配不上的用None。
可能会遇到的问题是比如订单如果不能匹配到人就有问题。
4.四种隔离级别分别是什么,innodb的默认隔离级别
读未提交、读提交、可重复读、可串行化
默认可重复读,读未提交是有各种问题,读提交解决了脏读,可重复读解决了不可重复读,可串行化解决了幻读
5.DDL DML DCL
区别是分别是针对库的,操作具体的增删改查,控制用户权限
6.分库分表的自增主键的解决
使用snowflake,使用中心数据库或Redis,使用uuid
snowflake的问题是如果时间回退可能出现重复主键,uuid的问题是需要的空间大,资源浪费
二、langchain相关
主要是和api相关的知识
1.在调用api引入上下文的一种方式是使用消息
消息是模型对话的基本单元,包括四种:系统、用户、ai、tool
可以使用json或者SystemMessage这些去调用。
1.python的列表
python是\[\]来表示列表
2.messages=[
SystemMessage("..."),
HumanMessage(),
AIMessage()
,
HumanMessage...]
3.profile是模型的一些相关信息,print
model.profile
4.langsmith是监考和调试调用模型的一个平台,需要申请api,然后在.env去配置,然后每次调用在langsmith能看
5.stream和batch的调用
invoke是阻塞式的完整的调用,stream是流式调用,会像在网页对话一样,返回的是一个迭代器,然后去打印。
batch可以同时传递一个列表的信息,然后返回的response也是多个信息,可以对应打印,批处理。