面试题(每日新增)

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{设备/分区} {目录}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容