[关闭]
@Dmaxiya 2022-08-03T23:23:34.000000Z 字数 10206 阅读 473

工作 / 学习记录

工作


2022 年 7 月 2 日

鉴于很久没有看《数据库系统概念》了,之前的进度 8.3 章较大可能已经遗忘上下文,所以下周从第 8 章开始看

由于已经有一定 SQL 语法基础,所以在下周的学习计划中加入刷 leetcode 数据库题目项

下周大概要做的事情:调整睡眠时间,保持运动,看《数据库系统概念》,刷 leetcode 数据库题目,应付工作琐事

每天时间安排

时间 事件
0:00 ~ 8:00 睡觉
8:00 ~ 8:30 起床刷牙洗脸剃胡须,预留 30min buffer
9:00 到公司就绪,开始学习,调整状态
9:15 进入学习状态
10:00 ~ 12:00 学习 + 工作
12:00 ~ 14:00 吃饭午休
14:00 ~ 18:50 学习 + 工作
18:50 ~ 19:50 吃饭,休息
19:50 ~ 21:00 刷两道 leetcode 数据库题
21:00 ~ 22:00 跑步
22:00 ~ 24:00 回家,洗澡,休息,准备睡觉

以上所有安排,在遇到线上紧急 oncall 情况下都可取消

学习 + 工作时长:8h,预计 2/3(5h 20min)的学习时间,大约可阅读 42 页 / 天

学习进度

日期 进度
周一 8.1 ~ 9.4
周二 9.5 ~ 10 章完
周三 11.1 ~ 12.4
周四 12.5 ~ 13 章完
周五 14.1 ~ 15 章完

预估可能是理想情况,整体进度:下周完成第 15 章,周六作为 buffer,赶不上的进度周六补齐,多余时间可自行安排,休息或继续学习,周日按十步学习法开始制定学习计划

每天同步学习进度与第二天安排,学习速度参考当天完成情况进行调整。

2022 年 7 月 4 日

第一天执行情况

整体按原计划执行完成

《数据库系统概念》9.4 章节阅读

刷两道 leetcode 数据库题,回到新手村,变成不看答案做不来的情况

读书体会

刷题分析

  1. 第一题做不出来,是在纠结 sql 语句执行效率的问题,对哪种语句实际执行效率更高不能进行快速的判断,可以归结为:
    1. 对数据库 explain 不够了解,看到数据库语句不能快速算出时间复杂度
    2. 对数据库结构与内部处理逻辑不够了解,可能是对 B+ 树结构不够了解
  2. 第二题做不出来,是因为对存储过程、存储函数语法不够熟悉,可以通过 leetcode 刷题逐步熟悉,可以看一道题系统地学一些语法,不用太担心

时间分配

平均阅读速度约为 4 页 / 25min,本来 18:30~21:00 时间安排为与同事约饭,由于下雨暂时取消,本来可以阅读更多内容,但在群里聊 high 了,且已经达到今日目标,所以倒也算正常分配了时间

隐患:这周内同事一定会再组织一次聚餐,今天没有把进度补上,等聚餐那天进度会有延迟

明天安排

2022 年 7 月 5 日

阅读计划改动

日期 进度
周一 8.1 ~ 9.4
周二 9.5 ~ 11.2
周三 11.3 ~ 12.4
周四 12.5 ~ 13 章完
周五 14.1 ~ 15 章完

整体计划变更

收到郭老师的邀请,改变计划,今天内看完《数据库系统概念》第九章,刷两道 leetcode 数据库题,就开始准备拼多多简历。

郭老师建议:先拿个offer,然后可以商量,晚一些来入职。然后再去看其它的选择——建议合理。

准备简历为最高优先级,待准备完简历,再安排调整后续阅读、面试准备计划。

第二天执行情况

未按原定计划完成。

完成《数据库系统概念》第 9 章阅读,整体感觉实用性极低,可以整章跳过。

完成 leetcode 两道数据库题。

刷题分析

刷题和昨天一样糟,今天碰到的主要问题:涉及到自己完全不会用的 mysql 函数,需要对 mysql 语法提供的内置函数有较为全面的了解之后再刷题,效果会比较好,否则还是只能抄答案。

时间分配

4 小时读完 19 页,即使按 阅读时间阅读速度也是 7.125 页 / 小时,中间被打扰次数较多且时间长,效果非常不理想。暂时没有好的优化方式,需要一些建议。

明天安排

2022 年 7 月 6 日

第三天执行情况

简历只完成草稿版本,收集了部分建议,未根据建议完成修改。
未输出新的学习计划
跑步任务完成:4 公里

明天安排

根据建议完成简历修改,发送给郭老师
完成新的学习计划制定
跑步

2022 年 7 月 7 日

第四天执行情况

简历完成,已发送给郭老师,已与 hr 沟通,商量 7.20 再确定面试时间
仍未输出新的学习计划
完成离职前所有准备工作
晚上去约饭了,跑步未完成

明天安排

完成离职流程
制定新学习计划(必完成,不完成不睡觉)
根据天气情况适量运动

2022 年 7 月 8 日

面试考点准备

重点参考:CS-Notes

每日时间安排

时间 事件
0:00 ~ 8:00 睡觉
8:00 ~ 9:00 起床刷牙洗脸吃早饭
9:00 ~ 12:00 学习
12:00 ~ 14:00 吃饭午休
14:00 ~ 18:00 学习
18:00 ~ 19:00 晚饭
19:00 ~ 21:00 学习
21:00 ~ 23:00 用 java 刷 5 道 easy ~ normal 算法题,范围:leetcode hot100
23:00 ~ 24:00 准备睡觉,休息,复习,自由安排

整体计划安排

日期 内容
7 月 9 日(周六) 简历中三个项目的介绍准备
Java 基础全部内容
投 5 家简历
7 月 10 日(周日) Java 剩余所有内容
投 5 家简历
7 月 11 日(周一) 数据库所有内容
7 月 12 日(周二) 计算机网络、Socket、操作系统、Linux
7 月 13 日(周三) 系统设计、面向对象思想、设计模式
进行一次模拟面试
7 月 14 日(周四) 开始正式面试,之前投的简历面试时间都约在 7.14~7.19 之间
spring 全家桶
整理面经、查缺补漏
7 月 15 日(周五) 集中安排面试
整理面经、查缺补漏
7 月 16 日(周六) 根据面经,查缺补漏
进行一次模拟面试
7 月 17 日(周日) 根据面经,查缺补漏
进行一次模拟面试
7 月 18 日(周一) 集中安排面试
整理面经、查缺补漏
7 月 19 日(周二) 集中安排面试
整理面经,查缺补漏
7 月 20 日(周三) 联系拼多多 hr,约面试时间

7 月 9 日

面试准备第一天完成情况

完成简历项目介绍准备
Java 基础全部内容第一次背诵完成,后续可能遗忘,需要复习巩固,但任务比较重,可能没有时间,放到整理面经、查缺补漏时进行
完成 13 家大致符合要求的 java 岗位简历投递
java 完成 leetcode hot100 5 道算法题

Java 刷题记录

  1. 盛最多水的容器
  2. 三数之和
  3. 电话号码的字母组合
  4. 删除链表的倒数第 N 个结点
  5. 有效的括号

明日计划

完成背诵 Java 剩余所有内容
投 10 家满足条件的 java 岗简历(牛客网已投完,需要找其他平台投递)
java 刷 leetcode 5 道 hot100 算法题

7 月 10 日

面试准备第二天完成情况

完成 Java 所有内容学习,GC 部分不够熟练,还需要巩固,在后面查缺补漏中巩固
在猎聘上投了 10 家 Java 岗公司,目前只有牛客网的 2 家公司通过简历(用友与华为)
java 刷 leetcode 5 道 hot100 算法题完成

学习时存在的问题:由于没有经历过面试,对于部分知识点不清楚需要掌握到什么程度(需要理解、需要背诵、还是需要看名词知道用法),所以学起来比较痛苦。

解决办法:先看一遍,把所有内容看懂、理解,不背诵,然后开始面试,在面试中碰到发现需要背诵的内容,再进行背诵。

Java 刷题记录

  1. 合并两个有序链表
  2. 括号生成
  3. 合并K个升序链表
  4. 下一个排列
  5. 最长有效括号

明日计划

学习数据库所有内容
关注简历进展,跟 hr 沟通,确定笔试、面试时间
java 刷 leetcode 5 道 hot100 算法题
完成华为机试题

7 月 11 日

面试准备第三天完成情况

完成数据库 SQL 语法SQL 练习数据库专题其他部分学习未完成
java 刷 leetcode 5 道 hot100 算法题未完成
华为那边不知道操作有什么问题,未收到笔试通知,已与 hr 沟通,第二天重发

简历进展

总共投递 23 家
3 家公司通过简历初筛,其中 1 家约了笔试
4 家公司简历被查看,无答复

其他情况

简历投递完成后第一个工作日,与猎头、hr 沟通花了比较长时间,渴望立即参加一场面试,没有耐心继续学习,学习效率低下,未完成预定学习任务。
前同事参加了拼多多面试,面试内容无八股,只问了项目(自己选择一个项目介绍)与一道编程题,难度比较低,面试表现主动发挥空间大,根据郭老师建议,主要精力投入在项目介绍上,为重点介绍项目画两张外部视角与内部视角的架构图,计划晚上完成,但仍未完成。

明日计划

高优准备项目介绍,自己试讲一遍,争取讲够 30 分钟
多出来的时间学习数据库部分剩余内容

7 月 12 日

面试准备第四天完成情况

完成华为笔试,通过,待后续沟通确定面试时间
比较浮躁,没有复习面试内容,也没完成项目介绍架构图
完成 leetcode 5 道 java 算法题

Java 刷题记录

  1. 寻找两个正序数组的中位数
  2. 搜索旋转排序数组
  3. 在排序数组中查找元素的第一个和最后一个位置
  4. 组合总和
  5. 接雨水

7 月 13 日

面试准备第五天完成情况

完成重点介绍项目架构图
完成华为性格测评,待约面试
SQL 面试内容复习无进展

简历进展

总共投递 23 家
2 家公司通过简历初筛,其中 1 家待约面试
5 家公司简历被查看,无答复
2 家简历不通过

明日计划

进行一次项目介绍试讲
完成数据库面试内容复习

7 月 16 日

面试准备第八天完成情况

完成数据库部分剩余内容学习
完成原定计划 7 月 12 日学习内容(详见整体计划安排
Java 实现 LRU,LFU
Java 刷 5 道 leetcode hot100 完成

Java 刷题记录

  1. 全排列
  2. 旋转图像
  3. 字母异位词分组
  4. 最大子数组和
  5. 跳跃游戏

简历进展

总共投递 23 家
2 家公司通过简历初筛,其中 1 家约于 7.18 下午 14:30 面试
7 家公司简历被查看,无答复
2 家简历不通过

计划:在拼多多面试之前可能只有一次华为面试机会,其他公司即使有面试也不准备参加了,开始着手准备正式有意向的公司面试

其他

了解到拼多多一面题型为一道编程题一道自选项目介绍,二面题型为一道编程题两道自选项目介绍,所以至少准备两个项目的架构图,保险起见准备三个项目架构图都进行一次准备

由于了解到拼多多的面试题型,对八股文的准备失去动力,学习目标为了解,不需要背诵,以兴趣学习为主

明日计划

完成整体计划安排所有八股文学习
进行一次项目介绍,耗时约 30~45 分钟

7 月 17 日

面试准备第九天完成情况

完成整体计划安排所有八股文学习
完成一次项目介绍

其他

项目介绍整体不太顺利,没有完整介绍完项目,中间不断被打断(可能是真实的面试情况),面试官经常在他想要了解的地方打断并开始提问,不得不先跳过一部分内容然后开始解答。
项目介绍时需要注意掌握主动权,不然容易被带节奏,导致项目讲得七零八落。
需要记一些项目收益相关的数据,面试官有极大概率提问到。
被问到几道八股文题目,几乎都不会,必挂。

Java 刷题记录

  1. 合并区间
  2. 不同路径
  3. 最小路径和
  4. 爬楼梯
  5. 编辑距离

明日计划

复习所有八股内容、面试常见问题,以及项目内容准备
进行华为一面

7 月 18 日

面试准备第十天完成情况

完成所有八股内容复习
完成华为一面,面试通过,准备二面

其他

华为面试出乎意料一道八股文都没问,所有准备的问题中只问到了一个自我介绍,然后面试官从自我介绍切入,问了开放平台 open api 是如何设计的,后面就这个内容继续拓展延伸,问了些其他问题,只要没问八股感觉就不错,面试开始前还非常紧张地复习八股内容,发现不问八股之后就轻松了很多,但没有问到我准备的项目,出乎意料,没办法为拼多多面试做准备。

面试题

问:如何设计 open api,或者设计 open api 需要注意什么
答:提供平台(网关)供业务方接入;接口授权、字段授权(应用的权限授予);设计 restful 风格的 open api;接口限频;open_id 隔离;OAuth token 授权。

问:对于一个新的 open api,如何配置限频
答:参考实际使用场景,查看对应下游接口日常 QPS 确定限频策略,接口上线后动态调整,针对大客户提供更高的频限配置白名单。

问:开发者反馈 open api 超时严重,但看服务监控各项异常,可以从哪些方面进行排查?
答:查看网关与实际后端服务 qps 与接口耗时监控,看是否符合实际情况

问:go 语言引入各种依赖包之后,是如何编译打包成二进制文件的?
答:不知道

问:使用过哪些开源工具?
答:kite,gorm,gin

问:go 项目如何排查线上内存问题?有什么工具?
答:不知道

编程题:计算二叉树任意两个节点之间的距离,节点可能不在树上
答:一开始没有想到最优解,只有一次询问但想到了 LCA,显然是杀鸡用牛刀了,没想好思路马上开始写,导致中间觉得思路不对删了两次代码,最后十几分钟写完,应该先冷静想好思路再开始写,最终没跑用例数据,只是顺着代码介绍了一下思路,面试结束后试了下用例发现还要改两行代码才能正确执行程序。

Java 刷题记录

  1. 颜色分类
  2. 最小覆盖子串
  3. 子集
  4. 单词搜索
  5. 柱状图中最大的矩形

明日计划

把今天面试题中不会的问题,都在网上搜一下,看有没有可参考的答案
继续准备新项目介绍,给另外两个项目分别画架构图

7 月 19 日

面试准备第十一天完成情况

学习面试中不会的问题:完成
给新项目画架构图:未开始

面试问题答案整理

go 语言的编译过程
接口超时问题排查
go 内存使用率问题排查

面试进展

华为约 7.21 二面
拼多多约 7.22 一面

Java 刷题记录

  1. 最大矩形
  2. 不同的二叉搜索树
  3. 验证二叉搜索树
  4. 对称二叉树
  5. 二叉树的层序遍历

明日计划

使用 pprof 排查一次内存问题
完成另外至少一个项目的架构图

7 月 20 日

Java 刷题记录

  1. 从前序与中序遍历序列构造二叉树
  2. 二叉树展开为链表
  3. 买卖股票的最佳时机
  4. 二叉树中的最大路径和
  5. 最长连续序列

7 月 21 日

Java 刷题记录

  1. 单词拆分
  2. 环形链表
  3. 环形链表 II
  4. LRU 缓存
  5. 排序链表
  6. 乘积最大子数组
  7. 最小栈
  8. 相交链表
  9. 多数元素
  10. 打家劫舍
  11. 岛屿数量
  12. 课程表
  13. 实现 Trie (前缀树)
  14. 数组中的第K个最大元素
  15. 最大正方形
  16. 回文链表
  17. 二叉树的最近公共祖先
  18. 除自身以外数组的乘积
  19. 滑动窗口最大值
  20. 搜索二维矩阵 II
  21. 移动零
  22. 寻找重复数
  23. 最长递增子序列
  24. 删除无效的括号

7 月 22 日

任务进展

学习 pprof 排查内存问题方法
完成三个项目的完整试讲
通过拼多多一面,华为二面与 hr 面
另外两个项目的架构图未开始

拼多多一面总结

项目介绍与提问

进行约 15 分钟的运维大盘项目介绍,仅介绍项目难点,未介绍项目整体结构,符合面试官与自己的预期,但之前准备的项目架构图没有派上用场,只是发给面试官看了一下。

问:这种项目公司应已有现成的基础设施可以使用,为什么没有采用?如果已有,是否在重复造轮子?如果没有,为什么没有推动做这方面的基础建设?
答:最初进行了一波技术选型,确定接入 Slardar 平台实现我们的业务,后来发现 Slardar 现有能力无法完全支持我们的业务,混合存储存在性能问题,而推动 Slardar 支持更多功能依赖 Slardar 排期,不满足我们的需求上线排期,所以我们自己接了独立的数据流进行清洗,自行处理数据。

问:运维大盘的查询规则是否比较灵活?clickhouse 能否支持我们的所有查询规则?用户能否自定义报警规则?
答:是,支持,不能自定义。

问:上报数据的量级是多大?上报数据的 QPS 有多少?为什么需要做这么多优化?
答:每天产生 1.5T 的数据;QPS 未知,没有关注过上报 QPS;需求完成后看实际查询效果发现查询耗时较长,因此需要优化。
问:能否估算出 QPS?
答:猜测大概是几百到一千的数据。(面试结束后估算,发现 QPS 大概有 1.7 万)
问:那 QPS 也不高啊,怎么会产生这么大量级的数据?
答:因为没有关注过这块数据,所以可能前面对 QPS 的估算有不准确的地方
(这一整段的回答感觉表现比较差)

问:这个项目,后续随着业务方接入的增多,还有哪些优化空间?
答:支持自定义告警规则,建立物化视图,clickhouse 表支持定时数据过期清空,其他的没想到了,这个项目 2020 年上线后就没有人力投入,主要是处于维护状态。
(回答得比较拉跨)

编程题

题目:最长有效括号
刷过这题,刷题时自己想了个两个 for 的做法,写过了就没看答案了,因为感觉面试表现不太好,影响写代码发挥,写得不顺,比平时慢,好在过了所有 case。
提示可以只用一个 for 完成这题,临时想动态规划做法,心态比较崩差点想放弃或者要提示,最后思考加写完第一版代码大概花了十几分钟,所有用例都没通过,思考后再修改一下,代码通过,然后讲思路。
整体感觉编程题也没有表现出自己相较于别人突出的优势。

向面试官提问

问:面试表现如何,是否有待改进的地方?
答:编程题不错,思维比较灵活,能想出另一种解法(但没提项目介绍部分表现得好不好)
建议:不要问面试表现,要关心这个部门做什么方向,有哪些业务,能学到什么,有哪些发展。

华为二面总结

项目介绍与提问

背景:面试官职级比较高,写过 C / Go / Java,写了一段时间 Go 之后改成 C 了,已经很久没有写过 Java,且也没有准备 Java 面试题,都是现想的题目拿来问。

问:现在主要做的应用管理,是什么样的业务?有没有什么技术难点?
答:企业的应用管理员对应用的审核、安装、使用配置、管理操作的业务。主要的复杂度在于业务逻辑的复杂,各种业务逻辑混合交叉。最后还是挑了一个写扩散改为读模型优化进行简单介绍。

问:是否了解 Java 的内存回收机制?
答:了解,背了一遍八股。
问:是否了解锁?
答:了解,背了一遍八股。
问:是否知道如何通过代码提高服务的吞吐?
答:1. 简单背了一下 NOI 的八股;2. 使用多线程或者协程;其他没想出来,面试官提示了一个二级缓存,我补充了下可以减少响应时长,增大吞吐。

问:Java 对数据库的交互是否使用过?是否用 Java 写过前端?
答:这两个问题都不会,面试官也没有继续追问。

在提问的间隙面试官都在跟我闲聊,通过闲聊过渡问题,比如他说他很久没写过 Java 了,Java 的开发速度还是很快的,之前写过一段时间 Go 语言,后来又改成写 C 了,我问为啥……(真的完全是闲聊,氛围很轻松)

编程题

题目:合并区间
问大概需要多长时间,我说 10~15 分钟,然后 10 分钟内写完,感觉表现比较好,写完代码测试一遍过,就是后面解释思路的时候举错了一个样例。

华为 hr 面总结

问:物理学专业为什么后面从事计算机?
答:阴差阳错,兴趣导向。简单介绍了一下怎么接触计算机以及参加比赛的内容。

问:ACM 比赛的队伍是固定的吗?
答:最开始不是,后来是,并简单介绍了一下组合选择的规则(这里可能是想问关于团队分工合作相关的问题,没有回答到点上)

问:为什么选择跳槽?现在是离职状态?为什么离职?
答:已经对开放平台业务结构比较了解,做业务不能获得成长;武汉组织架构比较动荡,武汉一直有人在离开,没有 hc 继续招人,资源倾斜到北京,可能不利于以后发展。

问:简单介绍了一下 OD 不是外包,一年后绩效拿到 A 并且能通过考试可以转为正式员工,且已经有个别 OD 转正成功(个位数),问对 OD 的看法。
答:当然更希望能直接成为正式员工,如果没有正式员工 hc 的话,也能接受 OD。

问:总包多少?薪资预期多少?
答:简单计算了一下,总包约 49.5w,如果是到深圳的话期望能有 30% 的涨幅。(这里扯了比较久总包的计算问题)

问:是否紧急需要 offer?聊到后续面试流程可能还比较长之类云云。
答:不紧急
(对最后这个问题的回答比较担心,不知道是否是因为我的预期薪资比较高,导致他们可能不会考虑发 offer,我回答不紧急,最后是否可能进入备胎池或者被晾着没有后续了,之前还说尽快安排主管面,最后又说后续面试流程比较长,前后不一致,不清楚原因,比较担心,我现在主要的目的是拿到确定的 offer,然后和拼多多 argue,如果没 offer 发下来或者一直被拖着,对我不利,所以我实际上对 offer 的需求是紧急的)

其他

雷帅已经进入拼多多谈薪阶段,郭老师给了一个建议薪资,觉得拼多多绝对能拿出这个价,但 hr 建议雷帅多拿几个 offer 再谈谈,可能是想让雷帅降低薪资预期(因为其他公司不会给拼多多那么高)。

我这边先离职再找工作,对谈薪非常不利,现在的弥补策略是先拿几个确定的 offer,或者有几家公司能进入面试阶段,再跟拼多多谈薪,才能有一些 argue 的资本,目前有进展的只有华为 OD,看起来不太有竞争力,需要更多 offer。

后续计划:开始正式投递简历,向有意向的公司投递,阿里、腾讯、美团已经没有 hc,目前可投递有 hc 的主要有米哈游、豪威科技(这家是猎头推荐的初创公司,说是比较有潜力,能开比较高的薪资),之前的小红书简历已被刷,这两家公司的面试需要尽快提上日程。

7 月 23 日

放一天假,去植物园玩。

7 月 24 日

华为主管面总结

进行一下自我介绍,聊了一下主要做的业务内容,整体根据简历内容进行提问,由于华为这边主要做的是底层存储相关业务,所以面试官主要问数据库与 redis 相关内容,几乎所有技术上的内容都没有回答上来……

问:你在工作过程中有使用过 redis 是吧?有在使用过程中中断 redis 执行过程,先做某些事情,再恢复执行吗?
答:没用过。

问:知道数据库 redo 和 undo 的作用吗?
答:undo 主要用于回滚,或者将数据库恢复到某一时刻的状态,redo 的用处不清楚。

问:MVCC 了解吗?
答:不了解

最后面试官让我提问:
深圳华为做的事情(主要做数据库底层存储的,对 C / C++ 的需求比较大),我表示比较有意向做 C / C++ 内容
华为的上班时间安排(9:00~21:00,每周三活动日、周五 17:30 下班,每个月月末最后一周周六加班一天)
OD 与正式员工工作内容完全相同,也在一起工作,以及 OD 的转正机制(工作满一年,绩效为前 30% A 且通过考试),目前有 3~4 人成功转正。

Java 刷题记录

  1. 除法求值
  2. 根据身高重建队列
  3. 分割等和子集
  4. 路径总和 III
  5. 找到字符串中所有字母异位词
  6. 找到所有数组中消失的数字
  7. 目标和
  8. 把二叉搜索树转换为累加树
  9. 二叉树的直径
  10. 和为 K 的子数组

7 月 25 日

去宁乡。

8 月 3 日

计划

  1. 学习英语口语(暂定每天一小时,内容:扇贝口语打卡、TED 英语演讲听力)
  2. 刷算法题(暂定每天一小时,内容:LintCode 打卡)
  3. 写完《大学》(预计耗时 7 天)
  4. 完成 ArcGIS 脚本开发(预计 2 天)
  5. 学习:
    a. 韩顺平 零基础30天学会Java (预计耗时 11 天)
    b. Java网络多线程专题 - TCP UDP Socket编程 多线程 并发处理(预计耗时 4 天)
  6. 搬家(预期耗时 3 天)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注