[经验分享] 对于技术人的成长,什么是最重要的?

本文为沈剑关于算法训练营的分享。

1. 聪明

  • 智商我们无法改变,从出生那天就决定了,但能通过努力逼近智商上限。
  • 勤奋练习更重要,通过练习让自己变得熟练。
  • 给自己定个小目标:比最晚下班的同学再晚一小时。关于这点我的理解为:下班不是工作的终点,而是学习的起点。下班不意味着享乐的开始,而是将自己从白天被公司支配的工作中解脱出来,让时间回归自己,开始思考和精进。
  • 程序员那么忙,哪有时间写文章?就问一个题?大家晚上在干嘛?就算晚上11点下班,也还有两个小时。

2. 业务过硬

  • 做什么业务?业务是进入一家公司的薪酬起点。
  • 业务过硬,要靠时间积累(经验很有用),不在一个业务里面浸淫几年,是不会遇到所有问题,踩到所有坑的。

3. 基本功扎实

  • 通用素质:沟通能力和管理能力,带团队,带项目。沟通能力:即把别人不懂的事情给说明白。
  • 底层操作系统的建设:数据结构和算法,设计模式。

4. 数据结构与算法与工程实践的关联

a). memcache/redis/leveldb,这些数据库哪个好?
没有最好,而是要找到每个工具的使用场景,它们一定是各有利弊的,否则只会存在一种了。在某个场景下,redis很好,为什么?底层原理,越偏底层,越与数据结构相关。面试官不会因为不会使用工具而挂人。

b). 快排:一个partition,两个递归。几行代码,很简单。为什么时间复杂度是O(NlogK),需要数学推导。此外,八大排序算法一定要会,分分钟手撕代码。

c). 数据库底层索引是B+树,为什么?B树改进了二叉树的什么?B+树又改进了B树的什么?

d). 开源的es搞不定,需要自己实现搜索引擎。50亿的帖子,2万的并发,全量数据的检索能够在10ms内返回,怎么做到的?说到底,底层还是和数据结构算法相关的。

e). 关于技术决策,技术选型。大家都是同一个技术栈,为什么别人做出来的东西性能就是比自己好?还是涉及到底层。

f). 上层工具,会用工具,不能成为核心竞争力。至少要到第二层:为什么要用这个?第三层:它是怎么做的。关于底层的细节,需要看源码,看英文文档,英文能力很重要。

5. case:

  • memcache三层认知
  • TopK
  • 复杂度分析
  • 数据库索引结构
  • 搜索内核
展开阅读全文
©️2020 CSDN 皮肤主题: 游动-白 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值