欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

網(wǎng)易游戲的面試題與參考答案記錄

  發(fā)布時(shí)間:2019-09-23 14:21:13   作者:JLL95   我要評論
這篇文章主要介紹了網(wǎng)易游戲的面試題與參考答案,總結(jié)了網(wǎng)易游戲入職面試中的常見問題及對應(yīng)參考答案,涉及線程、數(shù)據(jù)庫、爬蟲、以及各種算法的Python實(shí)現(xiàn)技巧,需要的朋友可以參考下

1 介紹課題

2 介紹進(jìn)程跟線程,進(jìn)程之間的通信

進(jìn)程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式。

1)進(jìn)程有獨(dú)立的地址空間,一個(gè)進(jìn)程崩潰后,在保護(hù)模式下不會(huì)對其它進(jìn)程產(chǎn)生影響;

2)而線程只是一個(gè)進(jìn)程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨(dú)的地址空間,一個(gè)線程死掉就等于整個(gè)進(jìn)程死掉

3)多進(jìn)程的程序要比多線程的程序健壯;

4)但在進(jìn)程切換時(shí),耗費(fèi)資源較大,效率要差一些。

5)對于一些要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進(jìn)程。

進(jìn)程之間的通信方式:

1)管道:進(jìn)程與具有相同祖先進(jìn)程的兩個(gè)進(jìn)程之間通信

2)命名管道:任意兩個(gè)進(jìn)程之間的通信,

3)消息隊(duì)列:

4)內(nèi)存映射:

5)套接字:

6)

3 http (get head post)udp tcp

4 數(shù)據(jù)庫的連接方式,分別是怎么連接的?

5 課題遇到的問題,怎么解決的?

6 常用的python包有哪些?

1)GUI 圖形界面: Tkinter,turtle

2)科學(xué)計(jì)算 :numpy;SciPy;pandas;randmon;sklearn

3)爬蟲相關(guān):scrapy;pyspider;selenium;requests;pysql

4)圖像處理:pillow;matplotlib;skimage;CV2

5)其他:os模塊就是對操作系統(tǒng)進(jìn)行操作;time;加密hashlib;logging模塊控制臺輸出日志;

6)接口測試相關(guān):sys,urllib,json,base64,

7)字典:collections,operator 

7 給定一串?dāng)?shù)組,判斷數(shù)組中是否存在兩個(gè)數(shù)之和等于給定的數(shù)

這個(gè)題其實(shí)很簡單,面試的時(shí)候腦子里就想著,應(yīng)該有什么比較好的方法,就把最基礎(chǔ)的思路都沒有說出來,唉傻到爆炸

思路:

遍歷每兩個(gè)數(shù)字,檢查之和是否等于給定的Key,如果相等的話,返回True;否則返回False

注意:

不能寫成

def issumin(array,key):
    for i in range(len(array)-1):
        for j in range(i+1,len(array)):
            if array[i]+array[j] == key:
                return True
            else:
                return False

因?yàn)檫@樣的話,程序只會(huì)把第一個(gè)值和第二值相加,判斷相等就True,不相等就False;不進(jìn)行后面的判斷

所以我們應(yīng)該改成:當(dāng)它兩不相等的時(shí)候,退出當(dāng)前循環(huán),進(jìn)入下一輪循環(huán),當(dāng)循環(huán)結(jié)束還有沒相等,我們就在循環(huán)結(jié)束之后加一個(gè)return False;如果相等,直接返回True

def issumin(array,key):
    for i in range(len(array)-1):
        for j in range(i+1,len(array)):
            if array[i]+array[j] != key:
                continue
            else:
                return True
    return False

array = [-1,3,2,7,0,-4,6]
key = 8
            
print(issumin(array,key))
    

改進(jìn)版

def find_numbers_with_sum(array,sum):
    array.sort()
    #res =[]
    add = 0
    start = 0
    end = len(array)-1
    while(start<end):
        add = array[start]+array[end]
        if add>sum:
            end -=1
        elif add<sum:
            start +=1
        else:
            #res.extend([array[start],array[end]])
            #return res
            return array[start],array[end]
    return []
            

print(find_numbers_with_sum([-1,3,2,7,0,-4,6],8))

算法復(fù)雜度是:O(n)

class Solution(object):
def twoSum(self, nums, target):
    dic = {}
    for i, n in enumerate(nums): 
        if n in dic:
            return [dic[n], i]
        dic[target-n] = i

8 輸入一個(gè)整數(shù)列表,將連續(xù)的整數(shù)作為一組,只記錄首尾,如[1,2,3,4,5,6]是一組,記錄其首尾為[1,6],返回所有首尾的列表,沒有返回空列表

思路:

首先進(jìn)行排序,然后判斷后一個(gè)減前一個(gè)等于1 ,繼續(xù)往后走;否則,說明,連續(xù)的序列已經(jīng)結(jié)束,將當(dāng)前元素添加到列表中

這樣的話,需要對最后一個(gè)進(jìn)行特判,如果最后一個(gè)不連續(xù),我們將它直接加到res中;如果連續(xù)先加到s中,再將s加到res中

注意:

1)這里需要設(shè)置一個(gè)start的flag,如果連續(xù)的子序列開始,需要將start置為非空;如果連續(xù)的子序列結(jié)束,需要將start置為空

2)只有子序列開始,和子序列結(jié)束時(shí),才append;連續(xù)的中間元素沒有必要append

def subset(array):
    res = []
    start = None
    array.sort()
    for i in range(len(array)-1):      
        if start == None:
            s = []
            s.append(array[i])
            start = 1
        elif array[i]-array[i+1] != -1:
            s.append(array[i])
            start = None
            res.append(s)
            
    if start == None:
        res.append(array[len(array)-1])
    else:
        s.append(array[len(array)-1])
        res.append(s)
        
    return res

if __name__ == '__main__':
    a = [3,2,7,8,1,4,10,11,12,15]
    print(subset(a))        
            
運(yùn)行結(jié)果:
runfile('C:/Users/Desktop/python/constant.py', wdir='C:/Users/Desktop/python')
[[1, 4], [7, 8], [10, 12], 15]

9 邏輯題:在公路上觀察一小時(shí),有車經(jīng)過的概率為96%,觀察半小時(shí),有車經(jīng)過的概率為多少

10 給你一只鉛筆,盡可能多的想出跟它相關(guān)的東西

11 平常玩什么游戲?

12 字符串轉(zhuǎn)化成整數(shù)?

題目面試的時(shí)候都沒怎么明白,只能說還需要成長

思路:

1)先判斷字符串是不是以正負(fù)號打頭的,如果是的話,分情況討論;先獲取字符串的符號,計(jì)算完成之后,按照正負(fù)號直接乘上去就行

2)如果字符串不是以正負(fù)號打頭的,按每一位進(jìn)行判斷就是

注意:

1) 這里的ord('0')一定是要加引號的,而不是ord(0)

2) 需要將字符串進(jìn)行反轉(zhuǎn),從最小的位置開始,每一位乘10,然后相加

def str2int(string):
    if string[0] == '+' or string[0] =='-':
        string1 = string[1:]
        res = 0
        mul = 1
        for i in reversed(string1):
            if ord('9') >= ord(i) >= ord('0'):
                res = res + mul*(ord(i)-ord('0'))
                mul *= 10
            else:
                return False
        if string[0] == '+':
            return res
        else:
            return -1*res
    else:
        res = 0
        mul = 1
        for i in reversed(string):
            if ord('9') >= ord(i) >= ord('0'):
                res = res + mul*(ord(i)-ord('0'))
                mul *= 10
            else:
                return False
    return res
    
    
print(str2int('-12309'))
運(yùn)行結(jié)果:
runfile('C:/Users/Desktop/python/str2int.py', wdir='C:/Users/Desktop/python')
-12309

相關(guān)文章

最新評論