前言
二面 40 分钟,面的稀烂,唯一可以圈点的就是一道 hard 写出来了。问了很多基础知识,没有形成很好的引导链到自己准备的项目经历上
面试过程
自我介绍
巴拉巴拉同一面。。。这次没说做了运维相关,但还是提了自己了解机器学习经典算法。强调了在 xxx 实习的主要产出,包括分布式定时任务解决方案,以及对已有项目的接口调整和性能优化。
问:讲一下做了什么优化
答:主要是在后台管理项目和数据分析平台项目中,出现了由于大数据量导致的性能问题。我也根据 SQL 慢查询优化的知识还有数据结构的知识进行了性能的优化
问:能具体讲讲吗
答:通过 explain 看查询的过程,尽量利用最左前缀法则,让查询条件走索引。然后看联表的时候,是不是小表驱动大表,有没有使用谓词下推,尽量不要使用 select *,尽量让索引覆盖返回字段。如果有深度分页的情况。。。(被打断)
问:可以讲有几种类型的优化吗
答:一种就是通过索引去优化,一种是通过联表的方式,还有就是分页的优化,以及分组优化,其实也是让分组条件走索引,也算是索引相关的优化
问:MySQL 索引原理
答:索引使用的是 B树 和 B+树,我们知道全表扫描的话消耗的复杂度是 O(n),在数据结构中对二叉搜索树做查找只需要 O(log n) 的复杂度
复盘:
MySQL 索引不止有 B-tree、B+tree,还有 hash
在仅需要 = <> IN 而不需要范围查询时,可以使用 hash 得到 O(1) 的查询效率
问:讲一下哈希表
答:以 redis 中的 hash 数据结构为例,redis 中一个 key 代表一块存储空间,使用 hash 时,一个 key 可以对应多个 field,每个 field 作为一个哈希函数的参数值,映射得到一个 value 或者 value 的存储地址
问:如何减少哈希冲突
答:如果出现哈希冲突的话可以顺延到后面的位置,也可以。。。(被打断)
问:怎么去减少哈希冲突
答:怎么去减少的话,可能得设计哈希函数,比如说对一个质数取模
复盘:
参考:
选择一个好的哈希函数:直接定址、相乘取整、平方取中、除留余数
增加哈希表大小
使用哈希盐值
问:卷积神经网络有使用过吗
答:有了解卷积神经网络的原理。相比于全连接,卷积层的特点是引入了卷积核,本质上是部分连接 + 共享权值。
问:1 x 1的卷积核有什么用
答:1 x 1 的卷积核是不是相当于全连接(脑袋宕机了)
复盘:
参考资料:深度学习笔记(六):1x1卷积核的作用归纳和实例分析_1x1卷积降维-CSDN博客
1 x 1 的卷积核可以对矩阵做放缩;减少通道数,降低运算量。
写一道题吧
题目:滑动窗口最大值
java
class Solution {
public int[] maxSlidingWindow(int[] nums, int k) {
int[] res = new int[nums.length - k + 1];
int index = 0;
Deque<Integer> queue = new ArrayDeque<>();
for (int i = 0; i < nums.length; ++i){
while (!queue.isEmpty() && queue.peekFirst() < i - k + 1)
queue.removeFirst();
while (!queue.isEmpty() && nums[i] > nums[queue.peekLast()])
queue.removeLast();
queue.offer(i);
if (i >= k - 1)
res[index++] = nums[queue.peekFirst()];
}
return res;
}
}
问:c++ 有了解吧
答:对 c++ 面向对象、STL 容器库、RAII 等特性有了解。
问:java 中没有内存管理,你有对 c++ 内存管理方面的实践吗
答:学校基础课程教的 c++ 是自己分配和释放指针,容易造成内存泄露的问题。c++ 中有一种叫 RAII 的思想,就是让在构造函数中分配资源,在析构函数中释放资源。智能指针就是 RAII 的一个应用案例
对面:智能指针还是麻烦了一点
问:golang 的话你多久能上手
答:之前有了解过 golang 的语法,如果是用 golang 做 web 开发的话,应该两到三天可以上手。因为后台开发那一套生态的思想是共通的,大概一周内可以做微服务相关的应用
问:前端有写过是吧
答:是的,之前在学校有做过 web 项目的前端,在实习的时候也跟这边的前端有协作,对前端做调整
问情况
(闲聊是不是对面对自己不感兴趣的征兆)
问:在粤海还是丽湖
答:粤海
对面:那实习的话挺近的
问:现在实习那边的项目还有多久,如果发 offer 的话
答:会尽快对接,快的话一周内,慢的话两周左右
反问
自作聪明反问了下哈希表怎么避免冲突,对面说是基础的东西,我就说那我回去自己搜一下。。。