滴滴机器学习工程师面试总结

        非常感谢滴滴给了我非常多次面试机会,也由衷地佩服滴滴面试官的素质,希望大家不要再黑滴滴了。

        也不知自己为什么这么有勇气,投遍了大厂的算法,然而最近的状态一直是做笔试,做测评,跑面试,什么公司都投,像赶场一样四处跑面试,真替自己心酸,仔细想一想,一家企业平均0.5小时投简历 + 2小时笔试 + 1小时测评 ,也就是一家公司平均要花3.5小时,然后细数这一个月,每天都在做笔试,根本就没有认真地去看书,没有踏踏实实地准备一家公司,整个九月都非常浮躁,面完滴滴我就一下子清醒了,也受到了很大的鼓励。

       总结经验,再接再厉,加油!

       本来我写代码就烂,今天三面面试没地方坐还在会议室地上蹲了一个多小时,极大地影响了我发挥,难过==

       字符串最长回文实现:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
def getLongList(lists):
    arr = list(lists)   #字符串转化为列表
    length = len(arr)
    # print (length)
    # print (arr)
    maxList =[]
    for i in range(length-1):  #遍历字符
        tmp = []            #这个是变的,我老喜欢放错地方
        #print (lists[i])
        if arr[i] == arr[i+1]:
            tmp.append(arr[i])
            tmp.append(arr[i+1])
            j = 1
            while i - j >= 0 and i+1+j < length-1: #判断重复字符前后是否还有重复的
                left = arr[i-j]   #左边字符
                right = arr[i+1+j]    #右边字符
                if left == right:   #如果左右两边相同,就加进tmp中
                    tmp.insert(0,left)      #加在最前面
                    tmp.append(right)    #加在最后面
                j += 1  #重复上述操作
        if len(tmp) > len(maxList):
            maxList = tmp

        if i >1 and arr[i-1] == arr[i+1]:    #以i为中心对称
            tmp.append(arr[i])
            j = 1
            while i-j > 0 and i+1+j < length:
                left = arr[i-j]   #左边字符
                right = arr[i+j]    #右边字符
                if left == right:   #如果左右两边相同,就加进tmp中
                    tmp.insert(0,left)      #加在最前面
                    tmp.append(right)    #加在最后面
                j+= 1
        if  len(tmp) > len(maxList):
            maxList = tmp
    return "".join(maxList)

if __name__ == "__main__":
    lists = "fccfedffde"
    arr = getLongList(lists)
    print (arr)

打印九九乘法表:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
def printTable():
    for i in range(1,10):
        print("{}X{}={}\t".format(i, i, i * i), end=" ")
    print ("\t")
    for i in range(1,10):
        for j in range(1,10-i):
            print ("{}X{}={}\t".format(j,j+i,j*(j+i)),end=" ")
        print("\t")
if __name__ == "__main__":
    printTable()

 

数据库索引:

     索引的原理:对要查询的字段建立索引其实就是把该字段按照一定的方式排列(比如,图书馆的书按照书名的第一个字母排序),建立的索引只是对该字段有用,如果查询的字段发生改变,那么这个索引就无效了,建立索引可以提高查询效率,但如果索引太多,就会降低查询的速度。

索引的优缺点:

优点:1)大大加快数据的检索速度,这是创建索引的最主要原因

          2)可以加速表和表之间的连接

         3)通过创建唯一性索引,可以保证数据库中表中的每一行数据的唯一性

         4)通过使用索引,在查询的过程中,使用优化隐藏器,提高系统的性能。

缺点:1)索引会占用一定的物理空间,如果占用的空间很多,就会影响整个系统的性能

           2)创建和维护索引要耗费时间,这种时间随着数据量的增加而增加

          3)当对表中的数据进行增删改的时候,索引需要动态的维护,这样降低了数据的维护速度。

索引为什么能够增加查询速度?

      在执行SQL语句时,默认的方式是根据搜索条件进行全表搜索,遇到匹配条件就加入到搜索集合中,如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少了遍历的行数,所以就能明显增加查询的速度。

什么时候添加索引呢?

      1)在经常需要搜索的列上,可以加快搜索的速度;

      2)在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;

      3)在经常使用的连接列上,这些列主要是一些外键,可以加快连接的速度

      4)在经常需要根据范围进行搜索的列上简历索引,因为索引已经排序,其指定的范围是连续的

      5)在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间

      6)在经常使用WHERE子句的列上面创建索引,可以加快条件的判断速度

创建索引的方法:

     1)直接创建索引,使用CREAT INDEX 语句或者使用创建索引向导;

     2)间接创建索引,在表中定义主键约束或者唯一性约束,同时也创建了索引

索引的类型:

1)唯一索引: 不允许其中任何两行具有相同索引值的索引

2)主键索引:主键索引是唯一索引的特定类型

3)聚集索引:在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同,一个表只包含一个聚集索引

Linux命令:

死锁的产生:

死锁的解决:

 

      

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值