学长帮忙内推了一波,然后做了笔试,通过,前面刚经过了第一轮面试。感觉是跪了。这里记录下,警示后人。。。。

一.笔试

第一问.
给定一个数组,任选两个元素求和,[a1,a2]和[a3,a4],使得(a1+a2)-(a3+a4)差最小。
import itertools import sys def solution(N,nums):
candidates=itertools.combinations(nums,2) tmp=[] for item in candidates:
tmp.append(sum(item)) tmp.sort() minimal=sys.maxint for i in range(1,len(tmp)):
minimal=min(minimal,tmp[i]-tmp[i-1]) return minimal try: while True: line =
sys.stdin.readline().strip() fisrtLine = line.split(" ") N=int(fisrtLine[0])
line = sys.stdin.readline().strip() SecondLine = line.split(" ") nums=[] for i
in SecondLine: nums.append(int(i)) print(solution(N,nums)) if line == '': break
except: pass
第二问,题目忘了
import collections import heapq import sys def solution(times,A,B): hp=[] for
i,time in enumerate(times): if time!=0: heapq.heappush(hp,(i,time)) numA=""
numB="" i=0 while hp: val,time=heapq.heappop(hp) if i%2==0 and len(numA)<A:
numA+=str(val) time -= 1 elif i%2==1 and len(numB)<B: numB+=str(val) time -= 1
if len(numA)==A and len(numB)==B: return int(numA)*int(numB) i+=1 if time>0:
heapq.heappush(hp,(val,time)) try: while True: line =
sys.stdin.readline().strip() fisrtLine = line.split(" ") times=[] for i in
fisrtLine: times.append(int(i)) line = sys.stdin.readline().strip() A=int(line)
line = sys.stdin.readline().strip() B = int(line) print(solution(times,A,B)) if
line == '': break except: pass
第三问. 给个数组任取两个元素,使得他们的和小于d,求概率是多少。
import itertools def solution(myinput,d):
candidates=itertools.combinations(myinput,2) print(candidates) count=0 length=0
for can in candidates: length+=1 if abs(can[0]-can[1])<=d: count+=1 return
float(count)/float(length) try: while True: print(solution([31,18,19,1,25],10))
# print(solution(word1,word2)) if input() == '': break except: print(1) pass
 四.Edit Distance

看看leetcode吧,比较经典的题了。

一面.

自我介绍,然后上来就撸算法。

题目:给定字符串str ,例如 "华为手机", 分割字符长度n,如n=1,输出{"华", "为", “手", "机"}
n=2 : 华为, 为手, 手机。 先加上限制条件对于字母、数字,不做分词。如:华为手机P30新款,输出:华,为,手,机,P30,新,款

这道题。。。。我耻辱的没写出来啊。。。。真是菜啊。。。。面试完自己又写了下。。。就出来了。。。。哎。。。。
# coding=utf-8 class solution(object): def isNumOrAb(self,cn): return '0' <=
cn <= '9' or 'a' <= cn <= 'z' or 'A' <= cn <= 'Z' def sliding_windows(self,
string, n): if len(string) == 0: return string res = [] l=r=0 while
r<=len(string): while r<len(string) and r-l<n and not
(self.isNumOrAb(string[r])): r+=1 cur=string[l:r] res.append(cur) if
r<len(string) and self.isNumOrAb(string[r]): l=r while r<len(string) and
self.isNumOrAb(string[r]): r+=1 cur = string[l:r] res.append(cur) l=r continue
l+=1 r+=1 return res if __name__ == "__main__": print
(solution().sliding_windows("华为手机P30新款", 5))
然后面试问的问题有:

1.假如你有一个size是10000000的map,里面可能放的是session,怎么快速的查到其中的key,value?

答:我会在session,里面加个时间字段,然后把他放到heap里.

2.什么是协程

3.redis原子操作

4.JAVA原子性

5.如何实现redis锁

5.如何实现redis缓存

6.项目里用了LSH算法?介绍一下

别的想不起来了。。。。反正凉了。。。。
 

 

技术
©2019-2020 Toolsou All rights reserved,
Qt学习2——.pro文件和.h文件介绍LinkedHashMap基本用法&使用实现简单缓存pytorch之ResNet18(对cifar10数据进行分类准确度达到94%)华为Mate 40 Pro+ 5G曝光:徕卡电影镜头、陶瓷机身统计字母个数(java语言实现)JavaScript中的 Call 和 Apply1190 反转每对括号间的子串 leetcode记一次EventBus内存泄露导致的项目问题浅谈uni-app页面传值问题 Chrome OS,对程序员和Windows意味着什么?,互联网营销