一灯
一面:
计算机原理相关: 进程调度有哪几种方式(操作系统) 。
先进先服务调度算法: 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用 FCFS 算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。
短作业(进程优先调度算法): 短作业(进程)优先调度算法 SJ(P)F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。
高优先权优先调度算法: 为了照顾紧迫型作业,使之在进入系统后便获得优先处理,引入了最高优先权优先(FPF)调度算法。此算法常被用于批处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度算法,还可用于实时系统中。当把该算法用于作业调度时,系统将从后备队列中选择若干个优先权最高的作业装入内存。当用于进程调度时,该算法是把处理机分配给就绪队列中优先权最高的进程,这时,又可进一步把该算法分成如下两种。
时间片轮转法:在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把 CPU 分配给队首进程,并令其执行一个时间片。时间片的大小从几 ms 到几百 ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言之,系统能在给定的时间内响应所有用户的请求。
原型原型链
我们每个 new 出来的实例,它有 prototype 以链的形式指向它的原型对象,它的原型对象又通过proto 指向 Object。
webpack 如何写 plugin
vue 数据响应式原理
运用了 object。getter setter 进行了个拦截。然后加入到创建的 dep 数组中,只要发生了变化,我们就 notify 一下订阅的。通知它们进行修改。
vue3 的新特性
双向绑定原理发生了变化,由原来得 object。getter setter 变成了 proxy ,这样做有个好处 就是监听更方便了,以前我们针对层次深一点得对象 或者数组,修改值得时候可能发生变化,检测不到,用了 proxy 可以检测到。 还有就是多个 composition api,跟 react hook 一样 才用 setup 将所有的方法都放在了里面。
代码实现: 实现 Array.prototype.reduce 方法
实现 12345678.002345 -> 12,345,678.002345
实现 数组里找任意两个数相加值为一个目标值的算法(输出下标)
如: [2, 4, 5, 6, 7, 1, 8] target = 8 最终输出为[[0, 3], [4, 5]]
二面:
计算机网络原理,为什么 tcp 有拥塞控制,tcp 如何实现拥塞控制,网络发生拥塞了又咋办(总之问的很细)
dns 解析的过程,域名解析的顺序,cdn 的原理
dns 首先去找主机库的,看有没有过,没有的话,再去服务器上面查找,找到对应的 ip 地址服务器。进行连接。 cdn 的话就在在理你最近的服务器放有你想要的资源,让你快速请求到资源。
基本依托于项目聊,聊微前端的技术架构
微前端主要解决的是管理后台这种很大的项目,在打包上线时候,时间缓慢, 又极易出现 bug,牵一发而动全身。所以我们将项目拆分出来,这样即解决了分布式管理,能根据特定业务进行上线,也不至于出现问题后还无法进行快速处理。而且还能根据特定的业务使用不同的技术栈,达到性能上面的提升。
qiankun 框架的实现
react native 的大致原理
为什么要用 qiankun 重构去掉 iframe
写了基于发布订阅者模式的 EventBus(过程中还问了 数据的引用和值的区别)
最后更新于
这有帮助吗?