面试题笔记

redis

一、redis
1.string
键值对的形式,每个key对应一个value,string类型为二进制,可以包含任何类型的数据
2.hash
键值对的集合,是一个string类型的key、value的映射表
3.list
一个字符串列表,按照插入顺序排序
4.set
string类型的无序集合
5.zset
string类型的有序集合

决策树的构建原理

1.ID3决策树
信息增益最大原则构建决策树
2.C4.5决策树
信息增益比最大原则构建决策树
3.CART决策树
基尼系数最小原则构建决策树
G =

排序算法

稳定性:经过某种排序后,如果两个记录序号相同,且两者在原无记录中的先后秩序依然保持不变,则使用的排序方法是稳定的,繁殖是不稳定的
1.冒泡排序
思想:把第一个元素与第二个元素进行比较,若第一个元素比第二个元素大,则交换位置。继续比较第二个元素与第三个元素的大小,若第二个元素比第三个元素大,则交换位置。依次类推,一次比较滞后,最右端的元素则为最大的元素。重复进行这项工作,直到排序完成。
python实现

def bubblr_sort(li):
    for i in range(1,len(li)-1):#表示趟数
        change = True
        for j in range(len(li)-i):  #表示无序区,无序区的范围为0,len(li)-i
            if li[j] > li[j+1]:
                li[j],li[j+1] = li[j+1],li[j]
                change = True
        if not change:
            return

li = list(range(10))
import random
random.shuffle(li)
print(li)
bubblr_sort(li)
print(li)`

2.选择排序
首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法我们称之为选择排序
python实现

import random
def select_sort(li):
    for i in range(len(li)-1):
        #i 表示躺数,也表示无序区开始的位置
        min_loc = i  #最小数的位置
        for j in range(i+1,len(li)):  #i  ,i+1,就是后一个位置的范围
            # [9, 2, 1, 6, 5, 8, 3, 0, 7, 4]
            # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
            if li[j] <li[min_loc]:  #两个位置进行比较,如果后面的一个比最小的那个位置还小,说明就找到最小的了
                min_loc = j   #找到最小的位置
        li[i],li[min_loc] = li[min_loc],li[i]  #吧找到的两个值进行互换位置
li = list(range(10))
random.shuffle(li)
print(li)
select_sort(li)
print(li)

MySQL与Redis的区别

MySQL
MySQL是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。
Redis
Redis是非关系型数据库,即NoSQL。Redis将数据存储在缓存中,读取速度较快,能大大提升运行效率,但是保存时间有限。

MySQL的索引

优点
1.所有的MySQL字段类型都可以被索引
2.能够大大提高数据的查询速度
缺点
1.创建和维护索引要耗费时间,随着数据量的增加,耗费的时间也会增加
2.索引也需要占空间,若有大量的索引,索引文件可能会比数据文件更快达到数据表的数据上线
3.当对表中数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度
使用原则
1.对经常更新的表避免进行的过多的索引,对于经常用于查询的字段应该创建索引。
2.数据量小的表最好不要使用索引。当数据量较小时,用于查询全部数据花费的时间可能比遍历索引的时间还要少。
3.在同一值少的列(字段)上不要建立索引(男,女)。

机器学习数据处理时数据量太大,怎么处理?内存都装不下时怎么处理

1.分配更多内存
2.用更小的样本
3.更多内存
4.出纳换数据格式
5.流式处理数据,或渐进式的数据加载
6.使用关系数据库
7.使用大数据平台

python中‘_’和‘__’的区别

单下划线(_):Python中没有真正的私有属性或方法,可以在你想生命私有的方法和属性前加上单下划线,以提示该属性和方法不应在外部调用。
双下划线(__):双下划线开头是为了不让子类重写该属性方法,通过类的实例化时自动转换。在类中的双下划线开的属性方法前加上__类名实现

MySQL中的truncate、delete和drop的区别

truncate tabel和delete只删除记录不删除表结构,drop将删除表的结构以来的约束(constrain)、触发器(trigger)、索引(index)。同时,truncate之后的自增字段开始从头计数,delete仍然保留在原来的数值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值