找工作训练计划
0. Goals
银行与金融:蚂蚁金服、 微众银行、农业银行、招商银行、兴业数金、渤海银行、宁波银行、建设银行、浙商银行(Java技术栈-全栈工程师)
互联网:腾讯、阿里巴巴(后端方向)
基础云服务:深信服、smartX、UCloud、阿里云、腾讯云(System方向)
研究院:中央研究院华为OS内核开发、华为DB内核开发(System 方向)
1. Introduction
找工作考察无非三样(除了学历等硬条件没法改变),就是考察白板编程、八股文、项目交流,这三样做好了基本(99%)没问题。
LeetCode题目 + 白板编程
项目
面试八股文
1.1How to Make it1.1.1 知识与技能的掌握
数据结构与算法分析
C/C++语言特性和实现原理
计算机网络
Linux系统编程与网络编程
操作系统原理
Linux内核原理(内存管理、文件系统、虚拟内存)
数据库原理及使用
常见的NoSQL组件(Redis、Memcached)
版本控制(Git)
分布式相关,如一致性协议比如Raft算法、分布式存储等(MIT 6.824)
系统设计能力,如短链接 ...
Web Developer路径实践录
0. 怎么定义Web Development
LeetCode 713 Subarray Product Less Than K
LeetCode题目链接
1. 取对数 + 二分查找首先连乘的乘积肯定会超过Integer的数值范围(在最坏情况下会达到 $1000^{50000}$),导致数值溢出,这时候可以使用取对数的方法,既能限制数值范围,也不会改变数值的大小顺序。取对数后,乘法运算变成了加法运算,$\mathrm{log}(\Pi_i \ nums[i])=\sum_i \mathrm{log}\ nums[i]$。
1.1 算法设计思路对数组nums中的每个数取对数后,存储它的前缀和prefix,即$\mathrm{prefix}[i+1] = \sum_{x=0}^{i}log(nums[x])$ ,这样在二分查找时,对于i和j,我们可以用$\mathrm{prefix}[j+1]-\mathrm{prefix}[i]$得到 $\mathrm{nums}[i]$ 到 $\mathrm{nums}[j]$(包含$\mathrm{nums}[i]$与$\mathrm{nums}[j]$) 的连乘积的对数。对于固定的i当找到最大的满足条件的j后,它会包含 $j−i+1$个乘积小于 $ ...
博客搭建
1. 为什么需要自己的博客系统