bilibili 视频云数据分析工程师笔试题(20200813)
30道选择题+3道编程题 105分钟。
选择题覆盖范围比较广,没记下来几道题。将记下来的做个整理。
计算机网络考点
(1)CRC循环冗余检验 [√]
(2) 数据链路层常用的设备 [√]
(3)访问某一个网址,其中涉及到的协议。
(4)一道关于安全漏洞的题
(5)HTTP状态码返回 200 403 502 含义 [√]
数据结构考点
(1)二叉树的先中后序遍历 [√]
(2)逻辑上可以将数据结构分为:线性和非线性结构 [√]
(3)排序的时间复杂度和稳定性 [√]
(4)冒泡排序 [√ ] 优化的冒泡 [*]
(5)快速排序的趟数问题 链接1 [√]
排序问题相关习题练习:链接2。
总排序趟数与初始序列无关的:(除了快速排序和优化的冒泡,其他都是)
算法时间复杂度与初始序列无关:堆排序、归并排序、选择排序、基数排序
总比较次数与初始序列无关的:选择排序、基数排序。
总移动次数与初始序列无关的:归并排序、基数排序。
参考:与数组初始状态无关的内排序算法 - 清风吹斜阳 - 博客园
(6)进制:二进制、八进制、十六进制、十进制 [考了两道,一道比大小,一道是7进制还是什么之类的问你哪个写的正确] [√]
Linux
(1)打开文件操作 fopen :参考链接1
(2)linux创建文件
(3)内核用户和user用户的区别 [√]
区分内核空间和用户空间本质上是要提高操作系统的稳定性及可用性。核心软件独立于普通应用程序,运行在较高的特权级别上,它们驻留在被保护的内存空间上,拥有访问硬件设备的所有权限,Linux将此称为内核空间。其它部分被作为应用程序在用户空间执行。它们只能看到允许它们使用的部分系统资源,并且不能使用某些特定的系统功能,不能直接访问硬件,不能直接访问内核空间。
Linux 中每个进程有两个栈,分别用于用户态和内核态。概括的说,从用户态进入到内核态有三种方式:系统调用、软中断和硬件中断。用户空间中的代码只有通过内核暴露的系统调用接口(System Call Interface)才能使用到系统中的硬件资源。
参考链接:Linux 内核空间与用户空间 - sparkdev - 博客园
内核空间(kernel-space) VS 用户空间(user-space)_Engine_OS的博客-CSDN博客
编程题1:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利。[数字允许重复,但每个数字仅允许使用一次,测试用例保证无异常数字]
如 [7,2,1,10] ->7*2/1+10 =24 故返回True。不能使用括号。
穷举法:将 + - * / 依次填入位置。计算这个结果中是否有满足条件的。
7 (+ - * / ) 2 (+ - * / ) 1 (+ - * / ) 10 = = 64种情况。然后我就写了下面这样的代码。
arr = [7,2,1,10]
class Solution:def Game24Points(self , arr ):# write code heretemp = 0 for i in range(0,4):for j in range(0,4):for k in range(0,4):temp = 0if i == 0:temp = arr[0]+arr[1]if i == 1:temp = arr[0]-arr[1]if i ==2:temp = arr[0]*arr[1]if i ==3:temp = arr[0]/arr[1]if j == 0:temp += arr[2]if j == 1:temp -= arr[2]if j ==2:temp *= arr[2]if j ==3:temp /= arr[2]if k == 0:temp += arr[3]if k == 1:temp -= arr[3]if k ==2:temp *= arr[3]if k ==3:temp /= arr[3]if temp ==24:return Truereturn False
t = Solution()
print(t.Game24Points(arr))
但是这样做存在一个问题,就是类似于[8,2,3,10]的情况时,返回False但是实际应该返回True。上面没有考虑乘法和除法的优先级。但是这道题不考虑优先级,竟然能通过。=.=走运了。
第一种解题思路:构造逆波兰表达式,参考链接。
因为 8,2,3,10这种情况,要首先计算2*3,如果按照从左往右的顺序,并没有考虑优先级关系。因此可以首先构造64种逆波兰表达式,在计算逆波兰表达式的值,得出最后结果。
arr = [1,1,1,1]
L = [] ## 存储表达式
for i in ['+','-','*','/']:for j in ['+','-','*','/']:for k in ['+','-','*','/']:L.append([arr[0],i,arr[1],j,arr[2],k,arr[3]])
#print(L)
flag = 0
for s in L:#print(s) # [7, '*', 2, '+', 1, '+', 10]stack = []q = [] ## for i in range(0,len(s)): ##逆波兰表达式的构造 if s[i] not in ['+','-','*','/']:q.append(s[i])else:if len(stack) == 0:stack.append(s[i])continue elif s[i] in ['/','*']:stack.append(s[i])continueelse:while (len(stack) and stack[-1] in ['/','*'] and s[i] in ['+','-']):string = stack.pop() ## 边构造边计算 b = q.pop()a = q.pop()if string == '*':q.append(a*b)elif b!=0:q.append(a//b)else:## b ==0 q.append(b//a) ## 为了保证 q中的数据有效性stack.append(s[i]) ## stackp[-1] 和 s[i] 是同等级 #print(q,stack)if len(stack): ###while(len(stack)):string = stack.pop()b = q.pop()a = q.pop()if string == '+':q.append(a+b)if string == '-':q.append(a-b)if string == '*':q.append(a*b)if string == '/':if b == 0:q.append(int(b//a))else:q.append(int(a//b))if q[-1] == 24 :flag=1break
print(flag)
第二种解题思路 参考连接:利用递归来做,计算每一个位置的可能情况,并且缩小剩余数组的规模最终计算结果是否符合结果。由于 8,2,3,10 时,不仅计算了 (8+2)*3+10 ,而且利用 i=1,j=2时,计算了 8 + (2*3) +10的组合。因此可以正确输出结果。
import math
arr = [8,5,8,2]def is24(n,res):if n ==1:return math.fabs(res[0]-24)< 0.000000001for i in range(0,n):for j in range(i+1,n):a = res[i]b = res[j]res[j] = res[n-1]res[i] = a+bif is24(n-1,res):return Trueres[i] = a-bif is24(n-1,res):return True#res[i] = b-a ## 为什么存在一个 b-a#if is24(n-1,res):#return Trueres[i] = a*bif is24(n-1,res):return True#if(a!=0):#res[i]=b/a#if is24(n-1,res):return Trueif(b!=0):res[i]=a/bif(is24(n-1,res)):return Trueres[i]=ares[j]=breturn Falseif is24(4,arr):print('1')
else:print('0')
升级版本题目:力扣 (待做)
编程题2:判断一个括号组合是否合法。‘()[]{}'’ 合法 ‘{[]’不合法。【栈】
用栈来判断,如果即将要入栈的元素是属于右括号的,那么就要看下栈顶元素是否与其相匹配,如果匹配则栈顶元素出栈,否则直接break返回False。
s = '()[[['def t(s):if len(s) == 0 :return Truestack = []def check(left,right):if left == '(' and right == ')':return Trueif left == '[' and right ==']':return Trueif left == '{' and right == '}':return Truereturn False for i in range(0,len(s)):if s[i] == ' ':continue ##存在空的情况,直接跳过elif s[i] in ['{','(','[']:stack.append(s[i])else:pop = stack.pop() # 栈顶if check(pop,s[i]):## Truecontinueelse:return Falseif len(stack) != 0 :return Falseelse:return True print(t(s))
当时AC了90%。可能存在一些空格的情况,那么这种的时,直接跳过就行了。不要将 S[i]=‘ 压入栈,那么在出栈的时候就没有必要判断了。
编程题3:有硬币1,4,16,64四种,问找给你的零钱中最少硬币个数。【leetcode 零钱兑换变形题DP】
描述链接:B站哔哩哔哩21届秋招算法岗笔试 假设货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小明使用1024元的纸币购买了一件价值为N(0<N<=1024)的商品_Matrix_1127的博客-CSDN博客
由于含有硬币1的。所以不用考虑 是否 不能完成兑换的问题。所以直接用总数除以每次最大零钱个数就行了。
#N =200
coin = [64,16,4,1]
M = 1024-Ncount = 0
for i in range(0,4):count += M//coin[i]M = M%coin[i]
return count
bilibili 视频云数据分析工程师笔试题(20200813)相关推荐
- 数据分析真题日刷 | 京东2019校招数据分析工程师笔试题
今日真题 网易2018校园招聘数据分析工程师笔试卷(来源:牛客网) 题型 客观题:单选51道,不定项选择12道 完成时间 120分钟 牛客网评估难度系数 3颗星 ❤️ 「更多数据分析真题」 <数 ...
- 数据分析真题日刷 | 京东2018秋招数据分析工程师笔试题
今日真题 京东2018秋招数据分析工程师笔试题(来源:牛客网) 题型 客观题:单选18道,不定项选择12道 主观题:编程2道 完成时间 120分钟 牛客网评估难度系数 3颗星 写到「数据分析真题日刷」 ...
- 【笔试题目整理】京东2018秋招数据分析工程师笔试题
最近在准备数据分析岗位的笔试,整理了牛客网上的一些试题与答案方便查看. ps:在牛客网搜索框搜索"数据分析",点击搜索分类版块"试卷"即可看到笔试套题. 套题信 ...
- 商汤科技20年秋招智慧城市-数据运营工程师笔试题(2019.8.19)
套题 商汤20年秋招智慧城市-数据运营工程师笔试题 题型 选择 * 20 + 问答 * 3 完成时间 60分钟 ❤️ 「更多数据分析真题」 <数据分析真题日刷 | 目录索引> ❤️ 「更多 ...
- java工程师考试题目_成功拿到Offer,Java工程师笔试题及答案!
1.是否可以从一个static方法内部发出对非static方法的调用? 不可以.因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时 ...
- 下列不属于android布局的是( ),Android软件工程师笔试题(全选择题)【0-1年经验】...
Android软件工程师笔试题,全选择题,适合0-1年经验的面试者. Android软件工程师笔试题 单选题(共35题) 1.退出 activity 对一些资源以及状态的操作保存,可以在生命周期的哪个 ...
- MTK深圳公司嵌入式软件工程师笔试题(含部分答案)
MTK深圳嵌入式软件工程师笔试题(B卷) 1. #define pi 3.14 #define Area(R) pi*R*R main() { int r1=5,r2=2; double s=0; ...
- android软件开发考试,Android软件工程师笔试题(全选择题)【0-1年经验】
Android软件工程师笔试题 单选题(共35题) 1.退出activity 对一些资源以及状态的操作保存,可以在生命周期的哪个函数中进行 A.onPause() B.onCreate() C.onR ...
- linux软件工程师笔试题,C/C++软件工程师笔试题
1,程序设计(可以用自然语言来描述,不编程):C/C++源代码中,检查花括弧(是"("与 ")","{"与"}")是否匹 ...
最新文章
- java中的controller_详解Spring Boot中Controller用法
- 编写五子棋的完整python代码_python实现五子棋游戏(pygame版)
- Linux驱动入门基础基础知识
- Linux 下 新增Oracle10g 实例
- OSPF——NSSA区域及完全NSSA区域(含配置命令)、第七类LSA类型 LSA-7详解
- Python零基础学习系列之三--Python编辑器选择
- 简单的小说阅读网站JavaWeb项目
- Android MVVM开发框架
- SAS入门(二)---DATA步
- QuartusII13.1 操作
- 省花博会,或将成为跳马百亿产业的跳板
- 生成验证码时,验证码图片不显示,报错信息如下:Can‘t create output stream;Can‘t create cache file
- Python检验多重共线性
- FineReport程序网络报表 - Hello,World
- 游戏音效制作《航海王:热血航线》奇亿音乐
- 【渗透测试笔记】之【钓鱼姿势——exe捆绑与免杀】
- DS18B20+数码管显示
- Ajax清晰请求步骤与代码
- java实现实体关系抽取
- 将c语言程序转化成伪代码,「第9篇」「做编程题方法3」「来点伪代码」