把今天的记忆里面的笔试题的情况梳理一下,投递的是算法工程师:
题型总共分为选择题10*1 编程题10、20、20、30 问答题5*2
编程题:
1、倒数排序:给你一个数n,以及1-n的一个排列,让你根据这个全排列的位置找到这个倒数全排列这个位置的排列
例如:n= 3
全排列有 123 132 213 231 312 321 输入n=3 排列 123 输出 321 123对应位置1 让你输出倒数第一个位置的排列
思路:需要把两个放在一起对比一下发现规律 output_i = n + 1 - input_i
#encoding = 'utf-8'
import sys
if __name__ == "__main__":
n = sys.stdin.readline().strip()
L = sys.stdin.readline()
L = [int(item) for item in L.strip().split(' ')]
res = ''
for item in L:
res += str(int(n)+1-item) + " "
print(res)
2、数字圆环
给你一个数n和一个数组,让你判断这个数组是否可以构成圆环,需要满足一个数左边的数+右边的数大于这个数
思路:首先对数组进行排序,除了最后一个数字,都满足相邻两个数大于自己,对于最后一个数字,交换最后两个数字,判断是否满足条件即可
# encodng = 'utf-8'
import sys
if __name__ == '__main__':
n = int(sys.stdin.readline().strip())
result = [int(line) for line in sys.stdin.realine().strip().split(' ')]
for i in range(n):
result.sort()
if result[0] + result[-2] > result[-1]:
print("YES")
else:
tmp = result[-1]
result[-1] = result[-2]
result[-2] = tmp
if result[-2] < result[-1] +result[-3] and result[0] + result[-2] > result[-1]:
print("YES")
else:
print("NO")
3、奇偶交换
给你一个数组,如果ai+aj为奇数,则ai和aj互换,最终输出的数组由小到大
# encoding = 'utf-8'
import sys
if __name__ == "__main__":
n = int(sys.stdin.readline().strip())
line = sys.stdin.readline().strip()
value = [int(item) for item in line]
temp1 = [x for x in value if x%2 == 0]
temp2 = [x for x in value if x%2!=0]
if temp1 != [] and temp2 !=[]:
value.sort()
result = [str(x) for x in value]
print((' '.join(result)))
4、优秀的01序列
问答题:
1、随机梯度下降原理? 梯度消失、梯度爆炸? 是什么以及怎么解决梯度消失和梯度爆炸?
2、说一下你知道的循环神经网络?介绍一种循环神经网络的 原理 结构 以及公式推导过程?