美文网首页
面试题(每日新增)

面试题(每日新增)

作者: 须臾之北 | 来源:发表于2018-10-23 19:37 被阅读10次

    2018/10/22
    面试题:
    * 1.JDBC工作原理
    * 2.本地yum源配置过程(使用光盘镜像)

    一、面试题
    1.JDBC工作原理
    ** JAVA Database Connectivity java 数据库连接
    ** 具体步骤:
    ** jar包 ——> classpath : 右键jar包——>add to BuildPath
    ** 加载驱动——load the driver
    ** 向DriverManager注册驱动
    ** 利用反射加载驱动
    ** 此时加载驱动时,静态代码块会被执行
    --------------------------------------------------------------------
    try {
    Class.forName(driverClass); //com.mysql.jdbc.Driver
    }
    catch(ClassNotFoundException e) {
    e.printStackTrace();
    }
    --------------------------------------------------------------------
    ** 获取连接
    ** 注意连接字符串url = jdbc:{dataBase}://{host}:{port}/{schema}
    ---------------------------------------------------------------------
    try {
    conn = DriverManager.getConnection(url,user,password);
    //url = jdbc:mysql://localhost/student
    }
    catch(SQLException e) {
    e.printStackTrace();
    }
    ---------------------------------------------------------------------
    ** 获取操作对象
    ** Statement和PreparedStatement
    ------------------------------------------------------------------------------------
    Statement stmt = conn.createStatement();
    PreparedStatement prestmt = conn.prepareStatement("insert into dept values(?,?,?)");
    ------------------------------------------------------------------------------------
    ** 操作数据库
    ** executeUpdate(sql)
    ** 返回int型,变更条数
    ** executeQuery()
    ** 返回ResultSet,Cursor游标——>在结果表中移动游标
    ** 接受返回结果
    ** 释放资源
    ** 关闭ResultSet -> 关闭StateMent(数据库会话) -> 关闭连接
    ** 以关闭connection为例
    --------------------------------------------------------------------
    static void closeConn(Connection conn) {
    try {
    if(conn != null)
    conn.close();
    }
    catch(SQLException e) {
    e.printStackTrace();
    }
    finally {
    conn = null;
    }
    }
    --------------------------------------------------------------------

    2.yum源配置过程(使用光盘镜像)
    * yum作用:
    ** 解决rpm软件包安装时的依赖问题 -> 软件包依赖,软件版本不匹配,系统架构(x86,x86_64),系统版本
    ** 基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需频繁地一次次下载和安装

    * yum 基本语法:
        ------------------------------------------------------------------
        yum install -y httpd   (功能描述:安装 httpd 并确认安装) 
        yum list     (功能描述:列出所有可用的 package 和 package 组) 
        yum clean all    (功能描述:清除所有缓冲数据) 
        yum deplist httpd   (功能描述:列出一个包所有依赖的包) 
        yum remove httpd   (功能描述:删除 httpd) 
        ------------------------------------------------------------------
    
    * 关联网络YUM配置
        ** 文件准备
            ** 一台联网的虚拟机
            
            ** 访问:http://mirrors.163.com/.help/centos.html在使用说明中,点击CentOS6进行保存
    
            ** 再保存文件的目录打开终端,执行pwd查看文件的保存位置
    
        **  替换本地YUM文件
            ** 把下载的文件移动到/etc/yum.repos.d/目录 
            ** mv CentOS6-Base-163.repo /etc/yum.repos.d/
    
        ** cd /etc/yum.repos.d/目录
            ** 用 CentOS6-Base-163.repo 替换 CentOS-Base.rep 
    
        ** 安装命令
            ** yum clean all
            ** yum makecache
    
    
    * 制作本地YUM源 
        ** 准备一台服务器,版本 CentOS-6.8-x86_64-bin-DVD1.iso 
        
        ** 配置好IP地址
        
        ** 将 CentOS-6.8-x86_64-bin-DVD1.iso镜像挂载到/mnt/cdrom
           -------------------------------------------
           mkdir /mnt/cdrom
           mount -t iso9660 /dev/cdrom  /mnt/cdrom
           -------------------------------------------
        
        ** 修改本机上的YUM配置文件,将源指向自己,备份原有的YUM配置文件
           -------------------------------------------
           cd /etc/yum.repos.d/
           cp CentOS-Base.repo  CentOS-Base.repo.bak 
           -------------------------------------------
        
        ** 编辑CentOS-Base.repo文件
           vi CentOS-Base.repo
            -------------------------------------------
            [base] 
            name=CentOS-Local 
            baseurl=file:///var/iso 
            gpgcheck=1 
            enabled=1   #增加改行,使能 
            gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 
            -------------------------------------------
        
        ** 清除YUM缓存
           yum clean all 
        
        ** 列出可用的 YUM 源 
           yum repolist
        
        ** 安装相应软件
           yum install -y httpd 
        
        ** 开启 httpd 使用浏览器访问
           http://hostname:80(如果访问不通,检查防火墙是否开启了80端口或关闭防火墙) 
           service httpd start
    
        ** 将 YUM 源配置到 httpd(Apache Server)中,        
           其他的服务器即可通过网络访问这个内网中的YUM源了
            cp -r /mnt/cdrom/ /var/www/html/CentOS 
    
        ** 取消先前挂载的镜像 
            umount /mnt/cdrom 
    
        ** 在浏览器中访问 http://hostname/CentOS/ 
            若成功,则可以被其他服务器访问且指向该YUM源
        
        ** 让其他需要安装RPM包的服务器指向这个YUM源,准备一台新虚拟机,备份或者删除原有的YUM配置文件
            -------------------------------------------
            cd /etc/yum.repos.d/
            cp CentOS-Base.repo  CentOS-Base.repo.bak 
            -------------------------------------------
    
        ** 编辑 CentOS-Base.repo 文件 
           vi CentOS-Base.repo
           -------------------------------------------------------
           [base] 
            name=CentOS-hoetname 
            baseurl=http://192.168.11.101/CentOS 
            gpgcheck=1 
            gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 
           -------------------------------------------------------
    
        ** 在此虚拟机上执行
            yum clean all
            yum repolist
    

    2018/10/23
    面试题
    1、Hive的运行机制和原理
    2、ext4,fat32,ntfs,swap各文件系统的数据类型的区别,mbr和gpt分区表的区别,fdisk和parted分区工具的区别

    1、Hive的运行机制和原理
    * 从两个方面来回答这个问题:
    ** hive的安装部署和运行
    ** hive和其他的大数据生态圈的组件的集合

    * 第一方面:hive的安装部署和运行
        ** hive 概念
            ** 将结构化的数据文件映射为一张表,并提供类 SQL 查询功能
    
        ** hive的安装部署
            ** yarn运行依赖的组件:
                ** Hadoop(hdfs yarn)
                    ** hive启动时,只需要hdfs
                        ** hive也是可以启动的,可以执行单表查询
                        ** 不带聚合和分组函数的单表函数是可以进行的,因为只是简单的文件读写,不涉及到转换为MapReduce过程
                    ** 涉及到mapreduce的才需要yarn的调度
            
            ** 关系型数据库(MYSQL)
                ** 可以使用schematools指定使用其他的数据库
                ** 如果不安装mysql,则元数据信息存储在derby中
    
        ** 穿插:hive与数据库的区别
            ** 数据库
                ** 数据文件存放在磁盘上
                ** 数据元数据记录在自己的数据库表中(mysql表)
                    ** 存放的元信息:数据库对象结构信息
            
            ** hive
                ** 数据文件存放在hdfs上
                ** 数据元数据信息存放在关系型数据库中
                ** 这也就决定了hive的运行架构:
                    ** hive运行架构
                        ** 本质是:将 HQL 转化成 MapReduce 程序 
                            1)Hive 处理的数据存储在 HDFS 
                            2)Hive 分析数据底层的实现是 MapReduce 
                                ** 可以通过HQL对结构化数据进行统计分析
                                ** 可以以分布式的方式执行计算任务
                                ** MR:计算模型
                                ** hadoop实现了MR计算模型,是一个分布式的计算框架
                            3)执行程序运行在 Yarn 上
    
    第二方面:hive和其他的大数据生态圈的组件的集合   
        ** HQL——>MR——>数据文件从HDFS中读取,由YARN分配任务
            ** 如果只是查询,那么只是生成临时的结果显示出来
            ** 如果要将结果进行记保存
                ** create table {tableName} as {HQL}        此时HQL会触发MR,但是单表查询不会触发mapreduce,只是文件读写
                ** 将结果记录到表中,下次直接select * from {tableName},以此提高效率
        
        * hive操作    
            ** hive创建表
                ** 默认的数据库default ——> /user/hive/warehouse
                    ** 数据库和数据库表都以文件夹的形式存在于HDFS
                ** 确定表类型——>内部表/外部表
                    ** 内部表:默认就是内部表
                        ** HDFS将数据文件导入到内部表——会将数据文件移动到表文件夹下
                        ** 删除表时,数据也会被删除
                    ** 外部表:external  
                        ** location:指定外部文件路径
                        ** 删除表,数据文件保留
                ** 需要指定数据文件的分隔符(\001)
            
            ** 创建数据库test
                ** /user/hive/warehouse/test.db
            
            ** show databases;
                ** 元数据:mysql(hive)中:DBS(id,数据库名称,存放路径,描述信息等)
                ** 此时不需要和hdfs进行交互
                ** 只需要查找关系型数据库中的表即可
            
            ** show tables
                ** 元数据:mysql(hive)中:TBLS(id,数据表名称,关联到数据库的id)
                ** 此时不需要和hdfs进行交互
                ** 只需要查找关系型数据库中的表即可
            
            ** desc {tableName}
                ** mysql(hive) ——> COLUMNS_V2(关联到表的id,字段名称,字段类型,字段顺序)
                ** 此时不需要和hdfs进行交互
                ** 只需要查找关系型数据库中的表即可
                
        * hive的执行   
            dataFlow(phoneNumber,upflow,downFlow)
                * select phoneNumber,sum(upFlow),sum(downFlow) from dataFlow group by phoneNumber;
                    ** Mapper
                        ** 数据输入:数据表的数据文件
                        ** 数据输出:group by 字段分组
                            ** COLUMNS_V2表中字段名称和字段索引的对应
                    ** Reducer
                        ** 数据输入:Mapper的输出
                        ** reduce方法:select 中出现的聚合函数
                        ** 数据输出:select后面的部分
    
            count(*) 和 count(phoneNumber)
                * count:统计所有非空数据的条数
                * count(*) 所有的都不是空才统计
                    字段a 字段b 字段c
                    111     333     null
                    111     342     123
                    111     355     124
                    * count(*) 结果为2
                    * count(a) 结果为3
                * count(phoneNumber) 统计phoneNumber不为空的条数
    

    2、ext4,fat32,ntfs,swap各文件系统的数据类型的区别,mbr和gpt分区表的区别,fdisk和parted分区工具的区别

    • ext4
      • Linux主要使用的文件系统
      • IEB——>1024PB
    • fat32
      • XP:32GB
      • 单个文件大小不超过4GB
    • NTFS
      • 2TB
      • 单个文件大小2TB
    • swap
      • 交换分区

    分区表区别:
    * 能够支持的磁盘大小
    * 分区
    mbr
    * 能够支持的磁盘大小2TB
    * 4个主分区
    * 3个主分区,一个扩展分区(分多个区)——>fdisk
    gpt
    * 能够支持的磁盘大小??
    * 无限制的主分区——>parted

    分区——>格式化(文件系统类型)——>mount{设备/分区} {目录}

    相关文章

      网友评论

          本文标题:面试题(每日新增)

          本文链接:https://www.haomeiwen.com/subject/fizazftx.html