您的位置:首页 > 职场人生

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

2018-09-21 23:54 232 查看

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

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

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

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

       字符串最长回文实现:

[code]#!/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)

打印九九乘法表:

[code]#!/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命令:

死锁的产生:

死锁的解决:

 

      

       

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: