绿盟科技武汉分公司--大数据实习-2019.5.9
作者:互联网
1. 操作系统里边的进程和线程,如何区分?什么时候用进程?什么时候用线程?操作系统操作基于线程还是进程?
①进程和线程区别:
根本区别:进程是操作系统资源分配的基本单位,而线程是CPU调度和执行的基本单位
包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
调度机制:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
通信机制:进程之间互不干扰,相互独立,通信机制相对很复杂,譬如管道,信号,消息队列,共享内存,套接字等通信机制;而线程由于共享数据段,所以通信机制很方便
开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
②什么时候用进程,什么时候用线程:
1)线程(效率更高,强相关):
频繁创建销毁:因为对进程来说创建和销毁一个进程代价很大
大量计算,切换频繁,耗时的操作:线程的切换速度快,可提高应用程序的响应
并行操作 :如C/S架构的服务器端并发线程响应用户的请求
多核分布:由于线程分用户线程和内核线程。内核线程再调用的时候可以去不同的核心去操作。所以多线程是可以利用到多核的。
2)进程(更稳定安全,弱相关):
多机分布:如果一台机器不够,扩展到多台机器比较简单
③操作系统基于进程:
进程可以独立地使用处理器 (通过进程调度,CPU时间片分配) ;独立地使用主存(通过进程的虚拟地址空间映射)
————————————————
参考博客:https://blog.csdn.net/kuangsonghan/article/details/80674777
参考博客:https://www.cnblogs.com/renzhuang/articles/6733461.html
参考博客:https://www.cnblogs.com/raichen/p/5883435.html
参考博客:https://blog.csdn.net/zhuoxiuwu/article/details/77850724
2. 结构或操作系统或网络哪些地方用到栈和队列?手写栈和队列的实现。
①字符串匹配问题(栈):
function isValid(str){
for(var i = 0, len = str.length; i < len; i++){
if(str[i] == '(' || str[i] == '{' || str[i] == '[' ){
stack.push(str[i])
} else {
if(stack.size == 0) return false;
var c = stack.pop();
//省略match定义
if(!str[i].match(c)){
return false;
}
}
}
if(stack.size == 0) {
return true;
} else {
return false;
}
}
②二叉树广度优先遍历(队列)
var node;
levelOrder(root){
var result = [];
if(root == null) return result;
queue.push(root);
while(!queue.empty()){
var node = queue.front();
if(node.left) queue.push(node.left);
if(node.right) queue.push(node.right);
result.push(node.value);
}
}
3. MySQL性能优化?左连接还是右连接?
① 左连接
② 右连接
20多条性能优化:https://www.cnblogs.com/pengyunjing/p/6591660.html
4. 用MapReduce做了什么?
①概念
- map:主要处理输入数据到结果数据的映射关系,这过程包括了数据的各种筛选过滤,过程用js的语法实现;
- reduce:处理map阶段输送过来的数据,通常做数据的统计工作,然后将结果以key-values的形式进行映射;
- 适用场景:大量数据的分组统计,类似关系型数据的group,但是统计效率远远超过mysql的统计效率;
- 实现语法为js的格式,理解这一点很重要,因为知道了这一点之后,只要你有扎实的JS基础语法,就很容易写map-reduce函数;
- map侧重分组的实现,将数据以key和value的形式传给reduce;reduce实现真正的统计功能,将同一组key的value累计统计;
- mapReduce最终也是通过聚合管道实现的,所以如果想要知道底层的实现,需要先掌握聚合管道的使用,这里不在本篇文章范围内;
原文链接:https://blog.csdn.net/LLF_1241352445/article/details/82750424
②wordCountDemo实现过程
猛戳:https://www.cnblogs.com/liangjf/p/liangjf.html
5. 数据库字段最多可以为多少个?
数据库 | 字段数 |
---|---|
SQL Server | 1024 |
ORACLE | 1000 |
access | 255 |
[1] 绿盟科技偏爱Hive+SQL、Python
标签:绿盟,node,str,2019.5,var,实习,线程,https,进程 来源: https://blog.csdn.net/weixin_42883132/article/details/100119089