其他分享
首页 > 其他分享> > 绿盟科技武汉分公司--大数据实习-2019.5.9

绿盟科技武汉分公司--大数据实习-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做了什么?

①概念

  1. map:主要处理输入数据到结果数据的映射关系,这过程包括了数据的各种筛选过滤,过程用js的语法实现;
  2. reduce:处理map阶段输送过来的数据,通常做数据的统计工作,然后将结果以key-values的形式进行映射;
  3. 适用场景:大量数据的分组统计,类似关系型数据的group,但是统计效率远远超过mysql的统计效率;
  4. 实现语法为js的格式,理解这一点很重要,因为知道了这一点之后,只要你有扎实的JS基础语法,就很容易写map-reduce函数;
  5. map侧重分组的实现,将数据以key和value的形式传给reduce;reduce实现真正的统计功能,将同一组key的value累计统计;
  6. 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