-
是否搭建过hadoop集群?简单介绍一下搭建的过程?
修改主机名配置网络
配置ssh无密码登录
修改hadoop配置文件
格式化namenode
启动hadoop并测试 -
决策树的特性? 常用的模型?
优点
天然的可解释性。这是决策树最大的优点了。可解释性有两方面的考虑。 一方面,树结构的理解不需要机器学习专家来解读。另一方面,很容易转化成规则。
非参数模型(non-parametric)。没有复杂的参数设置,谁跑效果都相对一样。
对相关(Correlation)属性能够比较好的处理。
可以处理缺失值 (missing), 字符型(nominal), 数值型(numeric)等数据类型。
运算速度相对较快
缺点
最大的缺点就是很容易过拟合。 导致实际预测的效果并不高。
不适合处理高维数据, 当属性数量过大的时候, 部分决策树就不太适用了。
对异常值(Outlier)过于敏感, 很容易导致树的结构的巨大的变换。
泛化(Generalization)能力太差, 对于没有出现过的值几乎没有办法。
常用的模型有
CART决策树 基于基尼系数 ID3 基于信息增益 C4.5 基于信息增益比 -
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 -
hive中的内部表与外部表的区别?
未被external修饰的是内部表(managed table),被external修饰的为外部表(external table);
区别:
内部表数据由Hive自身管理,外部表数据由HDFS管理;
内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定;
删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;
对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;) -
新建hadoop用户
sudo adduser hadoop
passwd hadoop
输入密码之后,一路 y 确定。 -
mongoDB基本操作
文档的插入 删除 更新 -
偏差,方差有什么区别?
偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据
方差:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散 -
python中用过的包?
numpy
pandas
sklearn
matplotlib
beautifulsuop
jieba
urllib
requests -
== 和 is 区别。
== 是比较两对象的值,is 是比较在内存中的地址(id), is 相当于 id(objx) == id(objy)。
-
__new__和__init__的区别
new__是一个静态方法,而__init__是一个实例方法.
new__方法会返回一个创建的实例,而__init__什么都不返回.
只有在__new__返回一个cls的实例时后面的__init__才能被调用.
当创建一个新实例时调用__new,初始化一个实例时用__init. -
read,readline和readlines
read 读取整个文件
readline 读取下一行,使用生成器方法
readlines 读取整个文件到一个迭代器以供我们遍历 -
连接字符串都有哪些方式?
格式化字符连接(%s)
format
join
“+” -
乐观锁和悲观锁
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作
乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。 -
三次握手四次挥手(网络)
三次握手
- 客户端通过向服务器端发送一个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 后未收到回复, 则认为服务器成功关闭, 客户端关闭连接.
-
如何判断某个对象是什么类型?
type(obj)
isinstance(obj) -
s = ‘abcd’, s[2] = ‘e’ 运行结果是什么?
报错,字符串是不可变对象 -
编码是一个什么样的过程?
编码是二进制到字符的过程 -
什么是鸭子类型
“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。
比如在python中,有很多file-like的东西,比如StringIO,GzipFile,socket。它们有很多相同的方法,我们把它们当作文件使用。
又比如list.extend()方法中,我们并不关心它的参数是不是list,只要它是可迭代的,所以它的参数可以是list/tuple/dict/字符串/生成器等.
鸭子类型在动态语言中经常使用,非常灵活,使得python不想java那样专门去弄一大堆的设计模式。
-
Python 里面怎么实现协程?
https://www.cnblogs.com/xiaobeibei26/p/6493351.htmlPython里面一般用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 -
list和元组
list []
元组 () -
先,中,后序遍历二叉数。完全二叉数是什么?
完全二叉树:深度为k有n个节点的二叉树,当且仅当其中的每一节点,都可以和同样深度k的满二叉树,序号为1到n的节点一对一对应时,称为“完全二叉树”。(摘自维基百科)
先序:先根后左再右
中序:先左后中再右
后序:先左后右再根 -
在 Python 内,函数传参是引用传递还是值传递?
引用传递。 -
深拷贝和浅拷贝。
浅拷贝操作只会拷贝被拷贝对象的第一层对象,对于更深层级的只不过是拷贝其引用,如下例中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]]
2223

被折叠的 条评论
为什么被折叠?



