一些面试题

  1. 是否搭建过hadoop集群?简单介绍一下搭建的过程?
    修改主机名配置网络
    配置ssh无密码登录
    修改hadoop配置文件
    格式化namenode
    启动hadoop并测试

  2. 决策树的特性? 常用的模型?
    优点
    天然的可解释性。这是决策树最大的优点了。可解释性有两方面的考虑。 一方面,树结构的理解不需要机器学习专家来解读。另一方面,很容易转化成规则。
    非参数模型(non-parametric)。没有复杂的参数设置,谁跑效果都相对一样。
    对相关(Correlation)属性能够比较好的处理。
    可以处理缺失值 (missing), 字符型(nominal), 数值型(numeric)等数据类型。
    运算速度相对较快
    缺点
    最大的缺点就是很容易过拟合。 导致实际预测的效果并不高。
    不适合处理高维数据, 当属性数量过大的时候, 部分决策树就不太适用了。
    对异常值(Outlier)过于敏感, 很容易导致树的结构的巨大的变换。
    泛化(Generalization)能力太差, 对于没有出现过的值几乎没有办法。
    常用的模型有
    CART决策树 基于基尼系数 ID3 基于信息增益 C4.5 基于信息增益比

  3. hadoop的shell中的处理命令? Hdfs 常用的命令?
    hdfs dfs -copyFromLocal /local/data /hdfs/data:将本地文件上传到 hdfs 上(原路径只能是一个文件)
    hdfs dfs -put /tmp/ /hdfs/ :和 copyFromLocal 区别是,put 原路径可以是文件夹等
    hadoop fs -ls / :查看根目录文件
    hadoop fs -ls /tmp/data:查看/tmp/data目录
    hadoop fs -cat /tmp/a.txt :查看 a.txt,与 -text 一样
    hadoop fs -mkdir dir:创建目录dir
    hadoop fs -rmr dir:删除目录dir

  4. hive中的内部表与外部表的区别?
    未被external修饰的是内部表(managed table),被external修饰的为外部表(external table);
    区别:
    内部表数据由Hive自身管理,外部表数据由HDFS管理;
    内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定;
    删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;
    对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;)

  5. 新建hadoop用户
    sudo adduser hadoop
    passwd hadoop
    输入密码之后,一路 y 确定。

  6. mongoDB基本操作
    文档的插入 删除 更新

  7. 偏差,方差有什么区别?
    偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据
    方差:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散

  8. python中用过的包?
    numpy
    pandas
    sklearn
    matplotlib
    beautifulsuop
    jieba
    urllib
    requests

  9. == 和 is 区别。

    == 是比较两对象的值,is 是比较在内存中的地址(id), is 相当于 id(objx) == id(objy)。

  10. __new__和__init__的区别
    new__是一个静态方法,而__init__是一个实例方法.
    new__方法会返回一个创建的实例,而__init__什么都不返回.
    只有在__new__返回一个cls的实例时后面的__init__才能被调用.
    当创建一个新实例时调用__new
    ,初始化一个实例时用__init
    .

  11. read,readline和readlines
    read 读取整个文件
    readline 读取下一行,使用生成器方法
    readlines 读取整个文件到一个迭代器以供我们遍历

  12. 连接字符串都有哪些方式?
    格式化字符连接(%s)
    format
    join
    “+”

  13. 乐观锁和悲观锁
    悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作
    乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。

  14. 三次握手四次挥手(网络)

三次握手

  • 客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三次握手的一部分。客户端把这段连接的序号设定为随机数 A。
  • 服务器端应当为一个合法的SYN回送一个SYN/ACK。ACK 的确认码应为 A+1,SYN/ACK 包本身又有一个随机序号 B。
  • 最后,客户端再发送一个ACK。当服务端受到这个ACK的时候,就完成了三路握手,并进入了连接创建状态。此时包序号被设定为收到的确认号 A+1,而响应则为 B+1。

四次挥手
注意: 中断连接端可以是客户端,也可以是服务器端. 下面仅以客户端断开连接举例, 反之亦然.

  • 客户端发送一个数据分段, 其中的 FIN 标记设置为1. 客户端进入 FIN-WAIT 状态. 该状态下客户端只接收数据, 不再发送数据.
  • 服务器接收到带有 FIN = 1 的数据分段, 发送带有 ACK = 1 的剩余数据分段, 确认收到客户端发来的 FIN 信息.
  • 服务器等到所有数据传输结束, 向客户端发送一个带有 FIN = 1 的数据分段, 并进入 CLOSE-WAIT 状态, 等待客户端发来带有 ACK = 1 的确认报文.
  • 客户端收到服务器发来带有 FIN = 1 的报文, 返回 ACK = 1 的报文确认, 为了防止服务器端未收到需要重发, 进入 TIME-WAIT 状态. 服务器接收到报文后关闭连接. 客户端等待 2MSL 后未收到回复, 则认为服务器成功关闭, 客户端关闭连接.
  1. 如何判断某个对象是什么类型?
    type(obj)
    isinstance(obj)

  2. s = ‘abcd’, s[2] = ‘e’ 运行结果是什么?
    报错,字符串是不可变对象

  3. 编码是一个什么样的过程?
    编码是二进制到字符的过程

  4. 什么是鸭子类型
    “当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

    我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。

    比如在python中,有很多file-like的东西,比如StringIO,GzipFile,socket。它们有很多相同的方法,我们把它们当作文件使用。

    又比如list.extend()方法中,我们并不关心它的参数是不是list,只要它是可迭代的,所以它的参数可以是list/tuple/dict/字符串/生成器等.

    鸭子类型在动态语言中经常使用,非常灵活,使得python不想java那样专门去弄一大堆的设计模式。

  5. Python 里面怎么实现协程?
    https://www.cnblogs.com/xiaobeibei26/p/6493351.html

    Python里面一般用gevent实现协程协程,

    (1)低级版协程的实现

    import gevent
    
    def test1():
    print(1,2)
    gevent.sleep(0)#执行到这里的时候切换去函数test2
    print(3,4)
    
    
    
    def test2():
    print(5,6)
    gevent.sleep(0)
    print(7,8)
    
    gevent.joinall([gevent.spawn(test1),gevent.spawn(test2)]
    )#在函数test1等待的时候,协程去执行了函数test2
    
  6. list和元组
    list []
    元组 ()

  7. 先,中,后序遍历二叉数。完全二叉数是什么?
    完全二叉树:深度为k有n个节点的二叉树,当且仅当其中的每一节点,都可以和同样深度k的满二叉树,序号为1到n的节点一对一对应时,称为“完全二叉树”。(摘自维基百科)
    先序:先根后左再右
    中序:先左后中再右
    后序:先左后右再根

  8. 在 Python 内,函数传参是引用传递还是值传递?
    引用传递。

  9. 深拷贝和浅拷贝。
    浅拷贝操作只会拷贝被拷贝对象的第一层对象,对于更深层级的只不过是拷贝其引用,如下例中 a[2]lst[2] 这两个对象为第二层,实际上浅拷贝之后,这两个还是一个对象。深拷贝会完全的拷贝被拷 贝对象的所有层级对象,也就是一个真正意义上的拷贝。
    —from copy import copy, deepcopy
    —lst = [1, 2, [3, 4]]
    —a, b = copy(lst), deepcopy(lst)
    —a, b
    ([1, 2, [3, 4]], [1, 2, [3, 4]])
    —id(lst[2]), id(a[2]), id(b[2])
    (139842737414224, 139842737414224, 139842737414584)
    —lst[0] = 10
    —a
    [1, 2, [3, 4]]
    —b
    [1, 2, [3, 4]]
    —lst[2][0] = ‘test’
    — lst
    [10, 2, [‘test’, 4]]
    — a
    [1, 2, [‘test’, 4]]
    — b
    [1, 2, [3, 4]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值