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閱讀 230,048評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,414評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,169評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,722評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,465評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,823評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,813評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,000評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,554評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,295評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,513評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,722評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,125評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,430評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,237評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,482評論 2 379

推薦閱讀更多精彩內容

  • 1.把二元查找樹轉變成排序的雙向鏈表 題目: 輸入一棵二元查找樹,將該二元查找樹轉換成一個排序的雙向鏈表。 要求不...
    曲終人散Li閱讀 3,349評論 0 19
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,728評論 25 708
  • 節日快樂,天天開心 我是什么人
    阿平哥閱讀 172評論 0 0
  • 趁云朵還未變硬 柳絲還能抽出細細的溫情 我打坐春天的風頭 持誦泥土骨髓和蚯蚓 最尖的仇 劃不破 春水的眼睛 最烈...
    張綱閱讀 168評論 0 1
  • “獨在異鄉為異客,每逢佳節備思親?!惫旁娎世噬峡?,重陽眾人皆知,但是有關重陽節的習俗您都清楚嗎?跟著小編的腳步走近...
    一笑傾誠閱讀 477評論 0 1