滴滴机器学习工程师面试总结
非常感谢滴滴给了我非常多次面试机会,也由衷地佩服滴滴面试官的素质,希望大家不要再黑滴滴了。
也不知自己为什么这么有勇气,投遍了大厂的算法,然而最近的状态一直是做笔试,做测评,跑面试,什么公司都投,像赶场一样四处跑面试,真替自己心酸,仔细想一想,一家企业平均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命令:
死锁的产生:
死锁的解决:
阅读更多
- 机器学习常见算法个人总结(面试用)
- 2017年BAT,京东,美团,滴滴等公司面试经验总结
- Java工程师的一些面试总结(2)
- 机器学习常见算法个人总结(面试用)
- Java高级工程师面试总结
- 机器学习面试知识点总结(不断补充中)
- 国内互联网公司算法&机器学习岗(阿里星)面试总结
- Java工程师的一些面试总结(1)
- c++开发工程师面试总结
- 机器学习算法工程师面试总结
- 机器学习面试经验总结
- 面试总结——Java高级工程师(二)
- Java工程师的一些面试总结(3)
- Java工程师的一些面试总结(7)
- 面试总结——Java高级工程师(二)
- 机器学习——贝叶斯朴素贝叶斯 知识点与面试总结
- 面试总结——Java高级工程师(三)
- 机器学习常见算法总结(面试用)
- [置顶] 面试总结——Java高级工程师(三)
- 【Java高级开发工程师】近一个月的面试总结