2022-2023-1 寒假字节青训练习笔记 Day 4
选择题 1:
以下哪些是解决哈希冲突的手段?
A. 拉链
B. 开放地址
C. 再散列
D. 滑动窗口
答:ABC 数据结构。
哈希冲突是什么?
当需要将一个值存入哈希表时,其哈希计算的位置已经有了值,不能直接存入,这就是哈希冲突。
拉链法: 在冲突的存入位置创建单链表,在链表中存入值。
开放地址法:既然对应位置有值了,就继续往下探测空的位置。
再散列:既然当前哈希计算的位置有了值,就再次计算,直到位置不冲突。
选择题 2:
建立 TLS1.2 连接需要几次握手?
A. 3
B. 4
C. 6
D. 7
答 D (TCP3次+TLS4次)
参考资料
3.3 HTTPS RSA 握手解析 | 小林coding (xiaolincoding.com)
选择题3
以下哪些是 CSS 块级元素的特性?
A. 宽度默认由其中的内容决定
B. 高度默认由其中的内容决定
C. 可以被分拆到多行
D. 可以通过 height 属性指定高度
答:BD CSS常识 可以通过下面这段对比效果感受一下,
行内元素的宽度由内容决定,可以被分拆到多行,CSS指定宽度高度无效
块级元素的默认宽度就是占满整个空间,而高度默认由内容决定,可以通过CSS指定宽度高度
<span style="background-color: #f8888">行内元素</span>
<div style="background-color: #bbb">块级元素</div>
<span style="background-color: #f8888;width: 200px;height: 100px;">行内元素</span>
<div style="background-color: #bbb;width: 200px;height: 100px;">块级元素</div>
选择题 4:
以下关于跨域说法错误的是?
A. http://example.com/a.html https://example.com/b.html 是相同的域名,属于同源
B. 跨域资源共享规范中规定了除了 GET 之外的 HTTP 请求,或者搭配某些 MINE 类型的 POST 请求,浏览器都需要先发一个 OPTIONS 请求。
C. CSS 中通过 @font-face 使用字体也会有跨域问题
D. Cookie,LocalStorage 和 IndexedDB 都会受到同源策略的限制
答 A 同源策略
A 协议/端口/主机 B OPTIONS是跨域检测 C 跨域资源都会有问题 D Cookie、LocalStorage本地存储不能跨域共享,IndexedDB遵循同源策略,不允许跨域访问。
选择题5
MySQL 数据库中是通过以下哪种日志实现 MVCC 机制的?
A. Undo Log
B. Redo Log
C. Binary Log
D. Slow Log
答 A
MVCC是什么?
这是InnoDB为了解决多事务并发执行发生读写、写读、读读时产生线程冲突问题。实现原理主要是依靠undo_log、生成版本链、read_view,让事务并发执行变为向不同快照版本的查询,使得并发执行不会互相干扰。
参考资料:
选择题 6:
关于排序算法以下结论正确的是?
A. 归并排序任何情况下都能保持时间复杂度为 O(n*log n)
B. 插入排序时间复杂度为 O(n*n),所以在任何情况下都比快速排序慢
C. 快速排序的最坏情况下的时间复杂度为 O(n*n)
D. 希尔排序任何情况下都比插入排序更快
答 : A C 复杂度有点忘 这里记个时空表吧
/ | 时间最好 | 时间最坏 | 时间平均 | 辅助存储 | 稳定性 | 复杂性 |
---|---|---|---|---|---|---|
直接插入 | O(N) | O(N^2) | O(N^2) | O(1) | 稳定 | 简单 |
希尔排序 | O(N) | O(N^2) | O(N^1.3) | O(1) | 不稳定 | 复杂 |
直接选择 | O(N) | O(N^2) | O(N^2) | O(1) | 不稳定 | 简单 |
堆排序 | O(Nlog2N) | O(Nlog2N) | O(Nlog2N) | O(1) | 不稳定 | 复杂 |
冒泡排序 | O(N) | O(N^2) | O(N^2) | O(1) | 稳定 | 简单 |
快速排序 | O(Nlog2N) | O(N^2) | O(Nlog2N) | O(Nlog2N) | 不稳定 | 复杂 |
归并排序 | O(Nlog2N) | O(Nlog2N) | O(Nlog2N) | O(N) | 稳定 | 复杂 |
基数排序 | O(d(r+N)) | O(d(r+N)) | O(d(r+N)) | O(r+N) | 稳定 | 复杂 |
选择题7
下列哪些可以实现浏览器存储数据?
A. cookie
B. localStorage
C. session
D. sessionStorage
答: ABD
这里问的是在浏览器上存储数据,也就是哪些选项是在本地存储
cookie:很明显是本地存储,服务端发送cookie给到客户端,客户端携带cookie进行请求,服务端效验cookie是否有效。
localStorage: 顾名思义,就是本地存储,而且这是客户端的API,生命周期永久,客户端根据这项存储持久化UI,例如这篇博客的暗色模式设置,设置一次以后,下次再打开就是默认为暗色。
session: 上面说的服务端效验cookie,其实就是在效验cookie中包含的session,所以它虽然也是在本地存储,但却是存储在cookie中的一小段,并没有作为主体存储在客户端上。
sessionStorage: 和loaclStorage一样,都是客户端的API,但是生命周期只有当前页面(会话),当客户端关闭(关闭标签页)就会被清除。
选择题8
对以下代码说法正确的是?
let arr = [1,2,3,4,5];
let arr2 = [1, , 3];
A. 执行 arr.length = 3,此时数组为 [1,2,3]
B. 执行 arr[10] = 11,此时 arr.length 为 6
C. 执行 delete arr[2],此时 arr.length 为 4,数组为 [1,2,4,5]
D. arr2.length 的长度为 2
答:A
这里一堆迷惑性代码…. 还是稍微分析一下,
A. length
在其他语言中显然是not write
的属性,但在奇葩的js确实可以。甚至可以用arr.length=0
直接清空数组。
B. arr[10]=11, 此时length是按定义10的,所以length=11
C. delete是js的操作符,相当于手动GC吧,这里delete arr[2]并没有把arr重置,只是删除了指向值。所以长度是没有变的,应该是[1,2, , 4,5]。
D.很明显不是
选择题9
以下哪些是 RDBMS 跟常见的对象存储系统的不同点?
A. 数据库支持事务
B. 数据库向用户暴露 put/get 接口
C. RDBMS 一般存储结构化数据
D. 数据库里的数据不能修改,只能删除后重新写入
答:AC
主要考证存储系统差异,PUT/GET,数据不能修改是NOSQL、Elasticsearch这类非结构化系统的特征,和RDBMS无关。
选择题10
常见的存储系统 IO 性能优化方式有哪些?
A. 尽可能多设计随机读写逻辑
B. 预读
C. 减少 IO 路径上的内存拷贝
D. batch 写入
答:BCD
从应用角度,目前业界有四种基本的I/O优化策略:
避免从存储设备上IO。最好的选择是完全避免或尽可能减少存储介质访问频率。这可以通过文件内存缓存来实现。预读擅长于将小的读请求转换为大的读请求,这有效地减少了存储介质访问的数量,从而降低了高昂的查找成本。具体的例子是众所周知的Linux VFS(虚拟文件系统)挂载选项noatime和relatime,用于消除由mtime更新触发的不必要的向存储设备的写操作。
顺序化。顺序访问能支持顺序预读并最大化磁盘性能利用率。对于并发顺序访问,预读在将交错的小I/O聚合为大I/O方面起着至关重要的作用。对于非顺序访问,通过使用智能磁盘布局管理、通知式预读、I/O排队和调度等技术,将磁盘寻址延迟最小化。举几个通过顺序化进行性能优化的例子:SCSI磁盘的TCQ(标记命令队列)和SATA磁盘的NCQ(本机命令队列);ext4/xfs的延迟分配和预分配;xfs中的回写集群等。
异步化。异步访问通过流水线化处理器和磁盘操作,隐藏应用程序的I/O延迟的方式来提高I/O效率。AIO、非阻塞I/O、回写和预读是异步I/O的常用工具。
并行化。聚合多个磁盘的容量和带宽可提升整体IO性能已经是分布式存储的共识。在传统的RAID层之外,以zfs和btrfs为例的新兴文件系统可以自己管理大型磁盘池。另一方面,在SSD内部使用了设备级并发处理。例如,英特尔在其SATA固态硬盘中开辟了10个并行的NAND闪存通道,可提供高达500MB/s的读取带宽和50000以上的 IOPS。并发I/O请求和并行数据传输是上述并行系统的I/O吞吐量的关键。主动预读在这个领域中扮演着重要的角色:它们通常需要大型的异步预读I/O来填充并行数据通道。
参考:
存储性能加速引擎之预读 - 腾讯云开发者社区-腾讯云 (tencent.com)
选择题10
在 css 选择器当中,优先级排序正确的是?
A. id选择器>标签选择器>类选择器
B. 标签选择器>类选择器>id选择器
C. 类选择器>标签选择器>id选择器
D. id选择器>类选择器>标签选择器
答:D
按照我对HTML的理解,一直遵循一个原则:越具体的样式声明,反馈在页面上的优先级越高。
选择题11
如以下代码所示,给 body 绑定两个事件后,
调用 document.body.click() 输出的结果是?
document.body.addEventListener('click', () => {
Promise.resolve().then(() => console.log(1))
console.log(2);
}, false);
document.body.addEventListener('click', () => {
Promise.resolve().then(() => console.log(3))
console.log(4);
}, false);
A. 2, 4, 1, 3
B. 2, 1, 4, 3
C. 1, 2, 3, 4
D. 1, 3, 2, 4
答:A
这是俩个异步方法,所以先后执行顺序是 2->4->异步输出1->异步输出3
选择题12
关于 MD5 以下哪些说法是正确的?
A. MD5 可以用于加密密码
B. MD5 不可逆
C. 对于不同的输入, MD5 一定输出不一样的结果
D. 对于不同长度的输入,MD5 一定输出相同长度的结果
答: BD
MD5一直有个误区,由于经常运用于登录效验,虽然不可逆但MD5是哈希碰撞里风险较高的,并不安全,其次算法加密必须要有对应的解密算法,而md5是信息摘要算法,所以并不能称为加密算法,