作息时间记录

下午
11/1
11/2
11/3
11/412:30
11/58:1010:45
11/68:0512:45
11/78:4712:35
11/87:4512:35
11/98:1012:35

11/108:05
11/11
11/12
11/137:5012:20
11/147:3512:45
11/157:501:15
11/167:4512:15
11/177:4512:20
11/187:4012:15
11/197:4011:45
11/207:3512:15
11/217:30
11/2212:35
11/2312:15
11/247:4512:05
11/257:55
11/26
11/27
11/28
11/29
11/30

11/6/2021

读微信文章,湖南长沙买菜阿姨的敬业态度,她不但卖菜,还给顾客准备一周菜谱,把菜洗切干净,顾客拿回去炒就行。这让她赢得了更多的顾客。

“任何一件小事,只要愿意把自己的精力汇聚到一个点,把它做到极致,用心、踏实地去打磨,你就会和别人拉开差距,生活也会因此慢慢明朗。”

11/8/2021

把Google Doc里面的做题笔记转成markdown格式存放在xianghe日志里面了,这样可以通过网页浏览,也可以通过GitHub直接查看源文件。没必要登录Google Doc了。随着做题数目的扩大,这个文件在google doc里面管理起来不如Markdown方便。

整理这个做题笔记的过程是一个花费时间的过程,也能起到梳理知识点的作用。以前做过的题目,通过整理比较,发现共同点,融会贯通,举一反三,倍速提高刷题的效率。

昨天自己在讨论过程中,搜到了loging system如何design的问题,还有top K system 如何scaling,搜到了soulmachine 整理的系统设计笔记,需要在网上分享自己的学习资料,通过自己的提炼与整理,分享出去,也是一个提升自己的途径。这是费曼学习法的重要一环,讲给别人听,教学相长。

每次工作时间参加公司的Machine learning Data Science的 conference,都有种学习的喜悦 [Grin]

11/8/2021

今晚没讲题,读了 DDIA 扫读的。

3-1 60多万, 2-2 55万,还是刺激到我了。努力刷题,练技术。当然工作不能放松。

11/9/2021

peng 应该有好消息,TikTok会给他offer,虽然他和hring mgr聊的一般般,但是前几轮面的好,所以还是会有offer。

我需要踏实刷题,提交oj,还有think aloud,讲出来,才是王道。

一次开一个窗口,需要节省精力。专注于要做的事情上。

Amazon locker, Linux find, 经典中的经典

小天使都带我们做过,黄菲现在是专家

这是九章海量数据处理那门小课的一个经典题目 ,大家赶紧去看

星星题,四节小课, top K

过去多少音乐,黄菲有资料,秦博士

海量数据处理, 令狐冲老师

Linux find,面试最后一轮, 在系统里面找一个文件。

Locker的code, and or , extension,包装,拆, file size

类之间的关系,还有类图,

一定要提前准备,在工作中写过的代码,和面试时间要求来不及

理解题,clarify

BQ讲完, 40分钟的。

BQ的问题:

工作上的经验

工作中的冲突,挑战, 他会follow up,会追问结果,想要的结果。

给的坑,生产的问题,造成的impact, accident 是否有report,多少impact的影响。

看是不是很困难,不停地问结果,学到了什么?

平时要多聊聊。 下意识的找到优点和问题。 多跟朋友们聊聊。

换一个角度,会发现有很大的impact,扯


生产环境的事故

monitor down 为0,

AB 配置, 解释这个东西,到底怎么找到原因的,有没有人帮你看。 事故的细节,有没有上报给你的老板。

扁平, 老板不知道。造成 user impact,事故报告, 刚刚release ,对用户影响小。

数据不好看, PM dashboard不好看。

学到的教训,

AB test 多么重要,即使和coding没太多关系。 ongoing的状态,

自己个人觉得, technical的solution

follo up: spreadsheet 对整个系统有什么帮助。 保证 AB test处于监控下,不会出问题。

别人会有没有给你带来表扬。 其他service 带来了。

move on 到下一个话题。

有没有miss deadline

lead 一个项目。自己占主导地位。

没有机会做demo 一个recent project

serve 1 serv2,

ood的基本原则,还是要知道。 hiring mgr java 怎么处理, concept

封装 多态,继承,

对leetcode java

11/10/2021

12:00 应该关机睡觉,保证良好的工作状态。

11/11/2021

还是刷不进去题。 看了一会儿文章- 朱健ZHUJIAN|小店,将悄然倒下

11/14/2021

昨天和黄菲过题还比较顺利。

11/15/2021

和xilu聊了。她在选择AWS 和doordash 之间选择。

📌Vista House 📌Bridal Veil Falls 📌Mt Hood山脚下的lavender valley 📌Mt view Orchards Fruit Stand,雪山脚下的向日葵🌻花田,一刀一枝~ 📌Pine Grove 📌Rowena Crescent Viewpoint, Will you marry me? 📌疫情以来的第一顿堂食,献给Riverside的outdoor seating 在Hood River和Mt Hood之间来回转的一天,传说中的Fruit Loop真是名不虚传~

11/16/2021

工作这么些年,职位没升上去的原因是。我没有真正去lead,drive一些项目落地。我比较常做的是参与项目。

还 行还好把oper A 项目做好le。

认真讲下去。

11/17/2021

44 wildcard matching 解法有点难理解。

https://tech.meituan.com/2016/04/29/spark-tuning-basic.html

11/19/2021

协程

https://www.cnblogs.com/liang1101/p/7285955.html

进程、线程 和 协程 之间概念的区别

  对于 进程、线程,都是有内核进行调度,有 CPU 时间片的概念,进行 抢占式调度(有多种调度算法)

  对于 协程(用户级线程),这是对内核透明的,也就是系统并不知道有协程的存在,是完全由用户自己的程序进行调度的,因为是由用户程序自己控制,那么就很难像抢占式调度那样做到强制的 CPU 控制权切换到其他进程/线程,通常只能进行 协作式调度,需要协程自己主动把控制权转让出去之后,其他协程才能被执行到。

 goroutine 和协程区别

  本质上,goroutine 就是协程。 不同的是,Golang 在 runtime、系统调用等多方面对 goroutine 调度进行了封装和处理,当遇到长时间执行或者进行系统调用时,会主动把当前 goroutine 的CPU (P) 转让出去,让其他 goroutine 能被调度并执行,也就是 Golang 从语言层面支持了协程。Golang 的一大特色就是从语言层面原生支持协程,在函数或者方法前面加 go关键字就可创建一个协程。

 其他方面的比较

  1. 内存消耗方面

    每个 goroutine (协程) 默认占用内存远比 Java 、C 的线程少。     *goroutine:*2KB     线程:8MB

  2. 线程和 goroutine 切换调度开销方面

    线程/goroutine 切换开销方面,goroutine 远比线程小     *线程:*涉及模式切换(从用户态切换到内核态)、16个寄存器、PC、SP…等寄存器的刷新等。     *goroutine:*只有三个寄存器的值修改 - PC / SP / DX.

在任务调度上,协程是弱于线程的。但是在资源消耗上,协程则是极低的。一个线程的内存在 MB 级别,而协程只需要 KB 级别。而且线程的调度需要内核态与用户的频繁切入切出,资源消耗也不小。

我们把协程的基本特点归纳为:

1
2
1. 协程调度机制无法实现公平调度
2. 协程的资源开销是非常低的,一台普通的服务器就可以支持百万协程。

 那么,近几年为何协程的概念可以大热。我认为一个特殊的场景使得协程能够广泛的发挥其优势,并且屏蔽掉了劣势 –> 网络编程。与一般的计算机程序相比,网络编程有其独有的特点。

1
2
3
1. 高并发(每秒钟上千数万的单机访问量)
2. Request/Response。程序生命期端(毫秒,秒级)
3. 高IO,低计算(连接数据库,请求API)。

协程(coroutine)是Go语言中的轻量级线程实现,由Go运行时(runtime)管理。

  在一个函数调用前加上go关键字,这次调用就会在一个新的goroutine中并发执行。当被调用的函数返回时,这个goroutine也自动结束。需要注意的是,如果这个函数有返回值,那么这个返回值会被丢弃。

在工程上有两种最常见的并发通信模型:共享内存消息

channel 是 Go 语言在语言级别提供的 goroutine 间的通信方式

Kafka 的高throughput 是怎么做到的。

Java的Future

Future就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果。必要时可以通过get方法获取执行结果,该方法会阻塞直到任务返回结果。

1
2
3
4
5
6
7
8
public interface Future<V> {
    boolean cancel(boolean mayInterruptIfRunning);
    boolean isCancelled();
    boolean isDone();
    V get() throws InterruptedException, ExecutionException;
    V get(long timeout, TimeUnit unit)
        throws InterruptedException, ExecutionException, TimeoutException;
}

https://zhuanlan.zhihu.com/p/88933756

Future 表示异步计算的结果。 并提供检查异步计算是否完成的方法,等待完成的方法,以及检索计算结果的方法。结果只能使用get 在计算完成之后获取,如果计算没有完成,get的调用将会阻塞。调用cancle 方法可以取消异步计算。也提供额外的方法来检查任务是否正常完成,或是被取消了。一旦计算完成,就不可取消了。如果想要使用Future 异步任务可取消的特性,而不关心返回值,可以声明为Futre<?> 类型,并在异步方法中返回null

参考: https://www.cnblogs.com/cz123/p/7693064.html

作者:理查德成 链接:https://www.jianshu.com/p/43c7c17a6a5f

Redis的一致性怎么保证的。 consistent hash

TCP和UDP的区别, (我当时说反了,TCP三次握手,建立可靠连接,UDP是无连接的,可能丢包。)

TCP is a connection-oriented protocol, whereas UDP is a connectionless protocol. A key difference between TCP and UDP is speed, as TCP is comparatively slower than UDP.

Overall, UDP is a much faster, simpler, and efficient protocol, however, retransmission(重发) of lost data packets is only possible with TCP.

小结TCP与UDP的区别:

1、基于连接与无连接;

2、对系统资源的要求(TCP较多,UDP少);

3、UDP程序结构较简单;

4、流模式与数据报模式 ;

5、TCP保证数据正确性,UDP可能丢包;

6、TCP保证数据顺序,UDP不保证。

https://zhuanlan.zhihu.com/p/392837875

写了一道word search 2, 需要用Trie tree来做。

11/20/2021

大棕熊发给我的面试资料,很全面,内容难易程度合适,我居然没有过一遍。 只是埋首刷题。 面试官一问,我还是没能回答得比较好。

利用好现有的时间,有空就看系统设计的视频,就放在手机里面看。多听多看几遍,让自己流利。

自己听完,争取给别人讲一遍。 这样才最有收获。

还要汲取教训,hiring mgr面有可能也需要写点代码的。 这段时间集中精力搞sys design,也需要坚持每天做一道题。

听了《人生海海》 上校的一生坎坷,人生还是靠自己去过,需要增强自己的能力,才能熬过艰难的岁月。

读了一亩三分地置顶的关于系统设计的文章。

https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=559285&extra=&authorid=65786&page=1

一篇文章解决所有system design面试 yuyahome 2019-10-11 20:50:42

关于blog,我在 https://www.1point3acres.com/bbs/thread-543700-2-1.html 回复了别人找blog的方法,粘贴过来,希望能帮到更多人

对每家onsite的公司 -> 在地里翻完最近两年所有onsite面筋aggregate所有design题目 -> 对每个题目找工业界实现的blog -> 阅读每个blog,选中最好的一到两个 -> 读到烂熟,整理出我当面试官的话会问的所有问题不停考自己 -> 白板英文自行mock 3遍 -> over

举个栗子: 面试lyft -> lyft喜欢考payment system -> google之 -> uber有个分布式的实现,不怎么详细,airbnb有个非常详细的SQL sharding的实现,很详细在它的blog上,采用 然后lyft onsite果然考了,秒了

monitor system/logging sytem 看哪些资料比较好呢? datadog的不错 去youtube搜 uber也有一个

github上的流行的几个repo我全都看了而且硬着头皮看完了。唯一有用的就是复习快忘光的一些概念,比如几种cache啦平均读写速度啦之类的,还背了一些常用数据。除此之外没啥用。光看那个肯定过不了面试的。建议用来查漏补缺,重点还是放在我文中提到的那些东西上吧。

grokking我看了五遍吧,主要是看思路和他的套路。他有几篇写的真的不好比如最后的ticketmaster,YouTube 和另外的忘记了。。但是他每篇文章的流程都是标准的面试流程,提出的问题也都算有价值。我花了大概两周来消化。因为边看边查资料,包括回去看DDIA,Google,看blog,看论文。 DDIA我第二部分看了好久,我觉得只谈第二部分的话看一遍肯定不够的,推荐画两到三周细品。 我最多的时间花在了看各个公司的blog上。比如uber那篇我看了估计10遍扣细节. 总共花在系统设计上的复习时间是大概两个月。 这也是为啥我文中说从0开始入门两个月也就够了。

“搞懂”是需要你知道这个技术的pros & cons,这样即使你没用过这种技术,联系一下你用过的,加上你知道它的pros & cons你也能知道什么时候该用它以及为什么,有什么tradeoff。这才是真的“搞懂”。

aunom 发表于 2020-12-05 22:55:03 uber 的那个介绍 cherami 的文章我看了,没看出来和 Kafka 比有什么优势,不明白为什么造了这么一个轮子。更骚的是 uber 现在自己也不维护了,好像是接着用 kafka 了 对那个系统估计是我为了冲kpi哈哈哈 但是不影响它作为系统设计面试的答案,或者你也可以直接去看kafka的实现,就是不知道有没有很好的相关文章了

请问google doc的文章是哪个呀?google了半天没搜到

搜design collaborative document system, gg 自己有个讲座还有好多篇相关的论文

11/21/2021

坚持学习,做一个有手艺的人。坚持做算法题,每周打周赛,这样做题的速度和效率还能保持很好的状态。

每天至少要做一题。 目标还是f和g家,不过tt最后是否通过,还是要尝试f和g家的。这次的准备,不留遗憾。要放弃侥幸心理,作为一个10年工作经验的人,就会被考到各种知识点。

看完那份面试资料,做到融会贯通。还能写出自己的学习笔记,总结浓缩与提高。

有两套Grok sys design的资料,一份是html格式,还有一份是png格式,

这一个月的准备,让我远离了微信朋友圈,电影和视频,减少了对“奶头乐”等消耗时间的休闲类节目。肉眼可见的技术和思考深度有进步。

11/22/2021

还是用九章的系统设计为蓝本,自己来讲一遍系统设计。

1
Mac 系统自带的播放器QuickTime Player 精准倍速播放。可以设置播放速度分别点击左右两个双箭头分别可以控制向前倍速和后退倍速, 如果不想整数倍速只能用快捷键。 按住option键,点击右双箭头,就可以加快播放速度,每次调整幅度为0.1; 同样想放慢播放速度,按住option键,点击左双箭头。Feb 28, 2020

修改自己的简历格式。发现同事的简历比较直观,naveensh 还是做了不少工作的。小伙子一直在学习,我要向他学习。

11/23/2021

10:00 - 10:35 Redfin hiring mgr 的面试。

修改简历花费时间很多。

10:46 am Google的 recruiter 直接安排我onsite,真是超出我的预料了。

讲座的声音需要洪亮,条理清楚,合理发问。

事先准备的例子,需要能够运行通过。

status code 3xx 重定向错误, 4xx,客户端的问题,auth没通过,token失效,access denied, 5xx service的问题

明天要做的事情:

[ ] 画metrics 监控系统架构图

11/24/2024

吃开口饭,做网课老师,需要保护好嗓子。套用一句广告语,没声音,再好的戏也出不来。

​ 两个日常保护喉咙的小练习:

在讲课之前或者课间休息时,推荐使用以下两个小方法来放松和按摩声带。作为掌握科学用嗓基础上的良好辅助,它们可以让声带的使用更加高效。

​ 1.气泡音。气泡音是一个非常经典的护嗓方式,是所有专业的声音从业者都熟练掌握的一个秘籍,操作起来简单且不受时间、空间的限制。

吸气,口腔打开,准备好发单元音“a”的状态,然后用轻微的气流达到我们的喉部震动声带,发出一串较低的、断续的、像气泡一样的声音。发气泡音的时候,身体要放松,喉部和声带的状态保持相对稳定、始终如一,气息要平稳,气泡大小要一致、均匀,颗粒感越明显越好。 这个练习可以放松和按摩声带,在大量用声前发气泡音就好比剧烈运动前的热身一样,让肌肉能够更好地适应接下来高强度的工作。

初学者如果发不出气泡音,可以尝试先轻轻发一个低音“a”,然后逐渐减小音量、降低音调,到最低处就会出现气泡音了。

​ 2.哼鸣。哼鸣也是一个非常好的放松喉咙的练习,并且能够更好地帮助我们找到正确的发声状态。闭上嘴巴发出“um”的延长音,身体放松、心情愉悦,就像含着半口水一样,气息持续、稳定,并有延伸感,好似用气息将声音推向很远的地方,引起了身体内部和周边空气的震动一般。

发出这个声音的时候会感觉到鼻梁有明显的震动,胸腔处也会有一点儿共鸣的感觉。这个练习不但能放松喉咙,而且能很好地检验你是否做到了“两头积极、中间放松”,因为只有同时做到气息深沉、口腔(内部)打开、喉咙放松,你才可以发出这样有空间感的声音。

《中国教育报》2019年05月06日第10版 版名:读书周刊·教师书房

作者:徐洁

播音系师哥教你如何让“声音变得更加好听”,B站 高冷小姜,通过口腔控制,还有气息控制来让声音好听。饶舌,打牙关,碰唇。

气息感受练习,腹式呼吸,吸到胸腔里面

保护嗓子和声带的两个声音练习: 第一个是开口发气泡音,a音,按摩声带,类似热身运动,尽量放松,让气从嗓子流出来。第二个:闭上嘴唇,发低音um

词语练习: 抛开,佩奇,彩排,窗台,

减少嗓子的发力感,气息慢慢吐

古诗词练习: 床前明月光,低头思故乡

用coderpad等工具来练习做题

能在有限的环境下,表达自己做题的思路,让面试官了解咱们的想法。

看了微信文章-Dropbox曾经的当红炸子鸡,2020年宣布不裁员。2021年初有裁员的消息流出,高层有动荡,现在reorg频繁,员工流失率也高,WLB变差了,oncall变成4周一次了。有的组整组人都离开了。项目的优先级也变来变去。

当然,公司还是有牛人撑着的。

11/30/2021

开始用Notion来写日记了。