教育

网络&操作系统

1.进程通信的方式有哪些,linux中管道的底层原理

管道、消息队列、共享内存、信号量、信号、socket

要知道管道、消息队列、共享内存的本质:内存本质、效率以及传输数据的要求,各种方式使用

https://www.jianshu.com/p/376b8ac0e461

2.tcp三次握手和四次挥手,四次握手流程,说一下 time_wait

https://www.jianshu.com/p/186485ef5e5e

TCP四次挥手,结合CS两端点的TCP栈和上层应用的交互来解释四次挥手,以及为何需要中间那个FIN-WAIT-2这个过程,最后由被动关闭一方的上层应用通过调用socket.closed()来结束数据传输,进入最终的FIN模式;

3.tcp传输中慢启动原理

https://www.jianshu.com/p/f95f64711902

慢启动,是TCP 协议为了保证可靠性传输而设计的拥塞控制策略中的一个算法,什么是拥塞控制?定义:当网络拥堵时,TCP会出现超时、丢失情况,触发重传数据,但是这会导致情况加剧,TCP 牺牲自己降低发送数量为,叫做拥塞控制。

TCP 拥塞控制、重传机制、滑动窗口、流量控制的关系(https://mp.weixin.qq.com/s/Tc09ovdNacOtnMOMeRc_uA)

tcp重传  https://www.jianshu.com/p/9f7ff80b9d3d

4.一个 10M 大小的 buffer 里存满了数据,现在要把这个 buffer 里的数据尽量发出去,可以允许部分丢包,问是用TCP好还是UDP好?为什么?

tcp,udp传输的是报文,每个包都一样大小,最大报文长度1472,大于就把数据分片,但不允许中间有包丢失否则接收端协议栈不能组合完整数据

5.https原理

HTTPS 加密过程,需要几次通信

http与https的区别,加密怎么加的?

http各种返回码,401和406啥区别?

Https的过程讲一下。先是说了http+ssl,dns之后,准备讲ssl的原理时,他示意我说回答一下传输层相关的。然后我就回答了tcp三次握手,对着服务器端指定端口,比如80端口发起连接,之后就是正常的数据请求了

https://mp.weixin.qq.com/s/bUy220-ect00N4gnO0697A

6.完整HTTP 请求涉及哪些协议?

https://mp.weixin.qq.com/s/bUy220-ect00N4gnO0697A

6打开一个 URL 的过程  https://mp.weixin.qq.com/s/iSZp41SRmh5b2bXIvzemIw

7.进程的调度:https://www.jianshu.com/writer#/notebooks/37032437/notes/80945566(待发布)

8.操作系统内存模型?哪些区具体放什么?

虚拟地址、物理地址

内核地址空间、用户地址空间、

进程内存空间模型:代码段、数据段、栈、堆等

https://www.jianshu.com/p/97d2ce61f64a

9.linux 里,被打开文件可以被另一进程删除吗?

不会真正删除,linux 有 2 个删除文件函数:

int unlink(const char *pathname);  删除文件系统中名字,如名字是文件最后一个link 且 该文件没被打开,删除。否则等关闭或最后link被删除,释放空间

int rmdir(const char *pathname);    只目录空时,才能删除

https://blog.csdn.net/weiwangchao_/article/details/94578327

https://www.cnblogs.com/StartoverX/p/4600866.html

10.linux中seletc和epoll原理

https://www.jianshu.com/p/4bca399daca3

二、db  redis:

1、为什么 mysql 用 B+ 树,mongodb 用 B 树?https://www.jianshu.com/p/9916e4483905

2、用过哪些锁,自旋锁和互斥锁区别?https://www.jianshu.com/p/7c5e28d839bb

3、mysql 主从同步怎么搞的?分哪几个过程?新机器要加到从机里,怎么个过程?

同步:https://www.jianshu.com/p/3fae2a45623f

扩容:https://www.jianshu.com/p/340d0b207a04

4、binlog 日志是 master 推的还是 salve 来拉?s拉,https://www.jianshu.com/p/dacea10cbddb

5、mysql,redis, zookeeper 分布式锁优缺点   https://www.jianshu.com/p/914c738d29f3

6、redis setnx + expire 有什么缺点,如何优化   https://www.jianshu.com/p/e6548912893b

7、redis 跳表,为什么不用红黑树?https://www.jianshu.com/p/0fd6de64bcbf

8、redis 集群怎么实现,说下一致性 hash

9、zset 延时队列怎么实现 
https://www.jianshu.com/p/326052101b6c

https://www.jianshu.com/p/072ecd523590

10、ZSET 做排行榜,分数相同时,按时间顺序排序怎么实现?说了一个将 score 拆成高 32 位和低 32 位,高 32 位存分数,低 32 位存时间的方法

11、让你设计一个限流的系统怎么做?令牌桶

12、让你设计一个延时任务系统怎么做 说了两个方案,一个是使用 redis 的 ZSET 来实现,考虑分片来抗高并发,使用 redis 的持久化来实现落地,使用 redis 的哨兵实现故障转移。一个是使用时间轮的方法。

中间件

DUBBO的底层原理

rabbitmq 的工作原理

kafka 工作原理,如何保证顺序等

Kafka 选主怎么做的?

kafka 分区怎么同步的

kafka 为什么可以扛住这么高的qps

kafka partition broker consumer consumer group topic 等都是啥关系?

Netty的IO原理,答:Reactor反应模型,Linux那边叫做IO多路复用。一个线程用来接收请求,将读写事件交给背后的worker线程。Redis、Nginx、Netty都是用到了这种模型。Redis其实也是多线程,只不过是用单线程来接收请求,在客户端看起来是串行接收执行,所以效果上就是单线程。但是IO多路复用才是Redis能高并发的底层保证

系统设计

海量的评论系统。这部分一共聊了近 20 分钟

设计海量日志系统

微信朋友圈系统,列出主要的表结构,只需要实现一些基础的功能,比如聊天列表等。写出一些数据结构

设计一个长链接转短链接,不过需要考虑高并发,回答了分库分表

算法:

实现简单令牌桶算法,没有考虑随时间滑动的情况;

加强版:令牌桶,加上随时间滑动的要求,即:限制用户在任一连续的一小时内,不能超过5W的请求。这边提到了说将一小时分成多格,比如60格这样的,面试官点头貌似同意了,然后就实现代码了,包括协程异步更新时间窗口;

206. 反转链表

15. 三数之和

面试题 02.05. 链表求和

76. 最小覆盖子串

最大交换

把一个方程式设计成树以及很多的 follow up 

①给你一个整数 n,使得从 n 中删除 k 个数字之后的数字最大

二叉树中和为K的所有路径

面试题 16.25. LRU缓存

链表表示的两个数相加

股票买卖,一次和无限次两

给定一个数组代表股票每天的价格,请问只能买卖一次的情况下,最大化利润是多少?日期不重叠的情况下,可以买卖多次呢?

输入: {100, 80, 120, 130, 70, 60, 100, 125}

1)只能买一次:65(60 买进,125 卖出)

2)可以买卖多次: 115(80买进,130卖出;60 买进,125卖出)

输出买卖的序列和最大利润

求一个有序整数数组中和为K的数的对数

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

  您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

  示例:

  输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

  输出:7 -> 0 -> 8

  原因:342 + 465 = 807

两个单向链表,返回求和后的链表结构,例如2->3->1->5,和3->6,结果返回2->3->5->1

一个无序数组找其子序列构成的和最大,要求子序列中的元素在原数组中两两都不相邻

现有一个随机数生成器可以生成0到4的数,现在要让你用这个随机数生成器生成0到6的随机数,要保证生成的数概率均匀。

有 N 枚棋子,每个人一次可以拿1到 M 个,谁拿完后棋子的数量为0谁就获胜。现在有1000颗棋子,每次最多拿8个,A 先拿,那么 A 有必胜的拿法吗?第一个人拿完后剩余棋子的数量是8的倍数就必胜,否则就必输。

给出一棵二叉树的根节点,现在有这个二叉树的部分节点,要求这些节点最近的公共祖先

1.https://blog.csdn.net/weixin_33805152/article/details/106618948;

2. https://leetcode-cn.com/circle/discuss/A0YstA/;

3. https://www.nowcoder.com/discuss/476824?type=post&order=time&pos=&page=1&channel=-2&source_id=search_post&subType=2;

4. https://www.sohu.com/a/404254709_463974

演拉登的题:

1、操作系统中断时,保存上下文保存的都是什么内容

2、print f输出输入时,程序怎么运行,操作系统底层在干嘛

3、Java里边的future等待时候底层在干嘛,操作系统在干嘛

4、红黑树原理,证明红黑树查找logn

5、序列化和反序列化    https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof/submissions/

6、两个线程并发输出,1到100,怎样才能保证输出按顺序

你可能感兴趣的:(教育)