2017校招去哪网,阿里,网易,中兴,华为笔试编程题五则(Python描述)

前言

学长忙着找工作,今天几轮笔试,把能拍到的笔试题都给我写了写,我想对明年找工作或者实习有所帮助


第一题,去哪网笔试题

题目我个人感觉难度还可以,我自己写了好久,三道题,一道重复,还有一题同学没拍到,总共时间给两个小时,时间给的久,相比有点道理。


去哪面试3

估计读题目就刷掉个一半了。。。。简单说一下(我同学翻译的,我自己懒得看),就是说,给定一串字符串,给定个分割阈值,然后进行分割,要是分割边界切坏了一个单词,那么切割按照安全距离切割,即放弃切割到的单词,然后切割到的单词重新当做切割起始点,再进行阈值进行切割,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学习真正学以致用而得到学长夸奖,哈哈。挺开心的。以此记录。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容

  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 3,294评论 0 19
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,501评论 25 707
  • 节日快乐,天天开心 我是什么人
    阿平哥阅读 167评论 0 0
  • 趁云朵还未变硬 柳丝还能抽出细细的温情 我打坐春天的风头 持诵泥土骨髓和蚯蚓 最尖的仇 划不破 春水的眼睛 最烈...
    张纲阅读 161评论 0 1
  • “独在异乡为异客,每逢佳节备思亲。”古诗朗朗上口,重阳众人皆知,但是有关重阳节的习俗您都清楚吗?跟着小编的脚步走近...
    一笑倾诚阅读 462评论 0 1