2017校招去哪网,阿里,网易,中兴,华为笔试编程题五则(Python描述)
2016-09-09 21:44
831 查看
前言
学长忙着找工作,今天几轮笔试,把能拍到的笔试题都给我写了写,我想对明年找工作或者实习有所帮助第一题,去哪网笔试题
题目我个人感觉难度还可以,我自己写了好久,三道题,一道重复,还有一题同学没拍到,总共时间给两个小时,时间给的久,相比有点道理。估计读题目就刷掉个一半了。。。。简单说一下(我同学翻译的,我自己懒得看),就是说,给定一串字符串,给定个分割阈值,然后进行分割,要是分割边界切坏了一个单词,那么切割按照安全距离切割,即放弃切割到的单词,然后切割到的单词重新当做切割起始点,再进行阈值进行切割,ok,应该能理解吧。
代码实现
import math part1=[] def test(str1,n): str1 = str1+' '*((len(str1)/n+1)*n-len(str1)) #先找到切割会碰到单词的片,确定为第几片段 k =1 while 1: try: if str1[(k)*n-1] !=' ' and str1[(k)*n]!=' ' : break else: k = k+1 except: part1.append(str1[(k-1)*n:].strip()) break # 遇到切到单词的片段,之前的片段都可直接分割 for i in range(k-1): part1.append(str1[(i)*n:(i+1)*n].strip()) # 从切割遇到问题的片段开始,专门处理片段 try: j = 2 while 1: # 找出问题的单词边界在哪 if str1[(k)*n-j] ==' ': part1.append(str1[(k-1)*n:(k)*n-j].strip()) str1 = str1[(k)*n-j+1:] #分割点创建新的字符串 str1 = str1.strip() #去掉边界空格 if len(str1.strip())>=n: str1 = str1+' '*(int(math.ceil(float(len(str1))/7))-(len(str1)/7)) test(str1,n) #递归 else: #如果到了尾巴,结尾 part1.append(str1) break break else: j = j+1 except: print 'Oops!' return part1 strings = raw_input("enter the strings you want to split:") blank = input("enter the between-segment distance:") part = test(strings,blank) result = [] #去除多余空格 for i in range(len(part)): if part[i]=='': pass else: result.append(part[i]) print result
测试官方图
自己进行验证
测试一:官方数据
enter the strings you want to split:Our world is but a small part of the cosmos. enter the between-segment distance:9 ['Our world', 'is but a', 'small', 'part of', 'the', 'cosmos.']
测试二:自己随机字符串
enter the strings you want to split:I LOVE CSDN AND Janshu enter the between-segment distance:6 ['I LOVE', 'CSDN', 'AND', 'Janshu']
测试三
enter the strings you want to split:this is a test! it costs three hours! enter the between-segment distance:6 ['this', 'is a', 'test!', 'it', 'costs', 'three', 'hours!']
应该是正确的把,我感觉,毕竟自己花了好多时间写的。。
第二题,阿里的笔试题
感觉相当简单,两三分钟完事,但是反正笔试过了面试一样被虐,别紧张。。。。。直接上题目
直接上代码
str1 = raw_input("enter the string:") result = [] result2 = [] result_str='' k = 0 for i in range(len(str1)): if str1[i] == '*': result.append("*") k = k+1 else: result2.append(str1[i]) for i in range(len(result2)): result.append(result2[i]) for i in range(len(result)): result_str = result_str+result[i] print "result:%s\\\\n \\\\"* \\\\"number:%d"%(result_str,k)
测试结果
enter the string:ab**cd**e*12 result:*****abcde12 "* "number:5
第三题,蜜蜂汇金
找出一个列表中只出现一次的数,比如输入列表[1,2,1,1,2,2,4],找出4即可,简单的,直接构建字典,填充值出现次数之后检索一下就可以代码
list1 = [9,1,1,2,2,3,74,1,5,52,3,3,4,4,4,2,5,1,1,1,] dict1 = {} k = 0 for i in list1: if i not in dict1: dict1[i] = 0 dict1[i] +=1 print dict1 for value in dict1.values(): if value == 1: print dict1.keys()[k] k=k+1 else: k =k+1
测试结果
{1: 6, 2: 3, 3: 3, 4: 3, 5: 2, 9: 1, 74: 1, 52: 1} 9 74 52
第四题,中兴的笔试题
题目代码
import re def f(num): g = 0 a = list(str(num)) for i in range(len(a)): g = int(a[i])+g return g def g(n): c = bin(n) d = re.sub('0b','',c) e = f(d) return e n = input("please enter n: ") x=0 for i in range(1,n+1): if g(i)==f(i): x = x+1 else: x=x print x
测试
please enter n: 21 3
第五题,网易笔试题
题目大意是:给定一个数n,计算n与斐波那契数的最小差值。首先,斐波那契数没给,这个基础在数据结构里出现比较多,不知道的这里有,是这样的序列:1,1,2,3,5,8,13,21,,,,等
代码
n = input("enter the n :") k = n if k in [1,2,3,5]: print "the answer is 0 " else: i = 1 j = 1 mins_list = [] while k>=3: x = i+j i = j j = x mins_list.append(abs(n-x)) k = k-1 print "the answer is:%s"%(min(mins_list))
结果就是
enter the n :15 the answer is:2
第六题,华为笔试题
题目整数之循环节点求和 描述: 任意一个不是用完全相同数字组成的四位数,如果对它们的每位数字重新排序,组成一个较大的数和一个较小的数,然后用较大数减去较小数,差不够四位数时在前面补零,类推下去,最后将变成一个固定的数:6174。 例如:4321-1234=3087 8730-378=8352 8532-2358=6174 7641-1467=6147。 如果K位数也照此办理,它们不是变成一个数,而是在几个数字之间形成循环,例如对于五位数54321: 54321-12345=41976 97641-14679=82962 98622-22689=75933 97533-33579=63954 96543-34569=61974 97641-14679=82962 我们把82962 75933 63954 61974称作循环节。在前面6174中,循环节认为只有一个数。 请输出这些循环节之和,最终结果可能需要使用64位的整型才能存放。当没有循环节,输出0,例如:输入33333,输出0。 运行时间限制: 无限制 内存限制: 无限制 输入: 输入为一个正整数,取值范围位0~0xffffffff 输出: 输出为各循环节的和 样例输入: 3214 样例输出: 6174
代码
#思路是先字符串转化数值存储列表,之后排序生成新的数值,做差,之后迭代就可以,最后写个清洗函数,把列表整理一下,做些后续处理即可,难度不大,思路要清晰 # 最大值减去最小值 def sub(num): list_str = list(num) list_num = [] str_min ='' str_max ='' for i in list_str: list_num.append(int(i)) list_num_b = sorted(list_num) for i in list_num_b: str_min = str_min+str(i) str_max = str(i)+str_max num2 = int(str_max)-int(str_min) return str(num2) #迭代计算 def main_cal(num): list_store = [] result ='' while (result) not in list_store: list_store.append((result)) result = sub(num) num = result del list_store[0] #删除第一个空格元素 return list_store,result # 清洗数据,生成最终环节列表 def clean(list_store,result_last): list_end =[] result_last = int(result_last) for i in range(len(list_store)): list_end.append(int(list_store[i])) # 使用index方法,找到符合的数所在的位置,开始截取 list_index = list_end.index(result_last) list_end = list_end[list_index:] return list_end ''' # 方法二,用遍历的方法找到符合数所在的位置 k = 0 for j in list_end: if j == result_last: list_end = list_end[k:] else: k = k+1 ''' num = raw_input("enter the number:") list_store,result_last = main_cal(num) list_end = clean(list_store,result_last) answer = 0 for i in range(len(list_end)): answer += list_end[i] print "环节列表:",list_end print "the answer is :",answer # python2.4版本以后,如果int的值超出范围不会溢出,而是内部转换为long,所以不用考虑溢出
测试结果
enter the number:6662 环节列表: [6174] the answer is : 6174 enter the number:4321 环节列表: [6174] the answer is : 6174 enter the number:3333 环节列表: [0] the answer is : 0 enter the number:54321 环节列表: [82962, 75933, 63954, 61974] the answer is : 284823
总结
去哪网的笔试题难度较大,思路谁都有,但是正真写出来的时候错误一堆,经过调试才最终成功的,自己的代码能力还有待提升,但也不枉费时间来训练自己,还有,这是第一次,三个月的python学习真正学以致用而得到学长夸奖,哈哈。挺开心的。以此记录。相关文章推荐
- 网易2017校招内推在线笔试编程题3
- 网易2017校招内推笔试练习卷编程题2--出专辑
- 网易2017春招笔试真题编程题集合--Python
- 2017京东校招笔试编程题--python
- 统计回文(string.insert的应用,insert只能插入string,不能插入char)----网易2017内推笔试编程题合集(二)
- 最近一段时间的笔试心得(阿里,网易,华为)
- 两种排序方法(字典序,strcmp的用法)----网易2017内推笔试编程题合集(二)
- 【在线笔试题解题报告系列】网易2017校招内推笔试之编程题【持续更新】
- 女友校招笔试编程题:网易测试岗-买苹果和求最大奇约数
- 星际穿越----网易2017内推笔试编程题合集(一)
- 2017年网易校招笔试编程题第二题
- 下厨房(istringstream的使用)----网易2017内推笔试编程题合集
- 2017秋季网易校园招聘编程题和个人解答(python)
- 京东2017校招笔试编程题2:进制转换、辗转相除法
- 网易2017内推笔试编程题合集(二)-幸运袋子
- 解救小易----网易2017内推笔试编程题合集(二)
- 网易2016校招内推笔试编程题
- 网易2017内推笔试编程题合集(二)第一题 混合颜料
- 2017京东校招笔试编程题:进制转换、辗转相除
- Fibonacci数列----网易2017内推笔试编程题合集(二)