成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

120 道 Python 面試筆試題匯總(上篇)

susheng / 2528人閱讀

摘要:所以在多線程中,線程的運(yùn)行仍是有先后順序的,并不是同時(shí)進(jìn)行。哈希函數(shù)的目的是使鍵均勻地分布在數(shù)組中。由于不同的鍵可能具有相同的哈希值,即可能出現(xiàn)沖突,高級(jí)的哈希函數(shù)能夠使沖突數(shù)目最小化。

首先這篇文章在我的《Python數(shù)據(jù)結(jié)構(gòu)》公眾號(hào)已經(jīng)提及,但是本篇文章提供了更為高級(jí)的解法,來發(fā)散大家的思維;同時(shí)為大家提供我的草稿py文件,大家可以關(guān)注《Python數(shù)據(jù)結(jié)構(gòu)》公眾號(hào)后恢復(fù) 120 獲取源代碼。

1、一行代碼實(shí)現(xiàn)1--100之和?

sum(range(0, 100))

2、如何在一個(gè)函數(shù)內(nèi)部修改全局變量?

num = 5
def func():
    global num
    num = 4
func()
print(num)

3、 列出5個(gè)常用Python標(biāo)準(zhǔn)庫(kù)?

os:提供了不少與操作系統(tǒng)相關(guān)聯(lián)的函數(shù)
sys:通常用于命令行參數(shù)
re:正則匹配
math:數(shù)學(xué)運(yùn)算
datetime:處理日期時(shí)間

4 、如何合并兩個(gè)字典?

name = {"name": "Gage"}
age = {"age": 25}
name.update(age)
print(name)

5、談下Python的GIL?

GIL是Python的全局解釋器鎖,同一進(jìn)程中假如有多個(gè)線程運(yùn)行,一個(gè)線程在運(yùn)行Python程序的時(shí)候會(huì)霸占Python解釋器(加了一把鎖即GIL),使該進(jìn)程內(nèi)的其他線程無法運(yùn)行,等該線程運(yùn)行完后其他線程才能運(yùn)行。如果線程運(yùn)行過程中遇到耗時(shí)操作,則解釋器鎖解開,使其他線程運(yùn)行。所以在多線程中,線程的運(yùn)行仍是有先后順序的,并不是同時(shí)進(jìn)行。
多進(jìn)程中因?yàn)槊總€(gè)進(jìn)程都能被系統(tǒng)分配資源,相當(dāng)于每個(gè)進(jìn)程有了一個(gè)Python解釋器,所以多進(jìn)程可以實(shí)現(xiàn)多個(gè)進(jìn)程的同時(shí)運(yùn)行,缺點(diǎn)是進(jìn)程系統(tǒng)資源開銷大。

6、Python實(shí)現(xiàn)列表去重的方法?

num_list = [1, 3, 1, 5, 3, 6, 1]
print([num for num in set(num_list)])

7、fun(args,kwargs)中的args,kwargs什么意思?

如果你有其他語言基礎(chǔ)的話,你應(yīng)該聽說過重載的概念,對(duì),Python為了避免這種繁瑣的情況發(fā)送,引入了args和kwargs;args用來接受非鍵值對(duì)的數(shù)據(jù),即元組類型,而kwargs則用來接受鍵值對(duì)數(shù)據(jù),即字典類

8、Python2和Python3的range(100)的區(qū)別?

Python2返回列表,Python3返回迭代器,節(jié)約內(nèi)存。

9、生成一個(gè)16位的隨機(jī)字符串?

import string
print("".join((random.choice(string.printable)) for i in range(16)))
-------------------------------------------------
X{|op?_gSM-ra%N

10、一句話解釋什么樣的語言能夠用裝飾器?

 函數(shù)可以作為參數(shù)傳遞的語言,可以使用裝飾器。

11、Python內(nèi)建數(shù)據(jù)類型有哪些?

整型--int
布爾型--bool
字符串--str
列表--list
元組--tuple
字典--dict

12、簡(jiǎn)述面向?qū)ο笾衉_new__和__init__區(qū)別?

1、__new__至少要有一個(gè)參數(shù)cls,代表當(dāng)前類,此參數(shù)在實(shí)例化時(shí)由Python解釋器自動(dòng)識(shí)別。
2、__new__必須要有返回值,返回實(shí)例化出來的實(shí)例,這點(diǎn)在自己實(shí)現(xiàn)__new__時(shí)要特別注意,可以return父類(通過super(當(dāng)前類名, cls))__new__出來的實(shí)例,或者直接是object的__new__出來的實(shí)例。
3、__init__有一個(gè)參數(shù)self,就是這個(gè)__new__返回的實(shí)例,__init__在__new__的基礎(chǔ)上可以完成一些其它初始化的動(dòng)作,__init__不需要返回值。
4、如果__new__創(chuàng)建的是當(dāng)前類的實(shí)例,會(huì)自動(dòng)調(diào)用__init__函數(shù),通過return語句里面調(diào)用的__new__函數(shù)的第一個(gè)參數(shù)是cls來保證是當(dāng)前類實(shí)例,如果是其他類的類名,;那么實(shí)際創(chuàng)建返回的就是其他類的實(shí)例,其實(shí)就不會(huì)調(diào)用當(dāng)前類的__init__函數(shù),也不會(huì)調(diào)用其他類的__init__函數(shù)。

13、簡(jiǎn)述with方法打開處理文件幫我我們做了什么?

打開文件在進(jìn)行讀寫的時(shí)候可能會(huì)出現(xiàn)一些異常狀況,如果按照常規(guī)的f.open寫法,我們需要try,except,finally,做異常判斷,并且文件最終不管遇到什么情況,都要執(zhí)行finally f.close()關(guān)閉文件,with方法幫我們實(shí)現(xiàn)了finally中f.close(當(dāng)然還有其他自定義功能,有興趣可以研究with方法源碼)。

14、列表[1,2,3,4,5],請(qǐng)使用map()函數(shù)輸出[1,4,9,16,25],并使用列表推導(dǎo)式提取出大于10的數(shù),最終輸出[16,25]?

num_list = [1, 2, 3, 4, 5]
print([x for x in list(map(lambda x: x * x, num_list)) if x > 10])

15、python中生成隨機(jī)整數(shù)、隨機(jī)小數(shù)、0--1之間小數(shù)方法?

import random
print(random.randint(1, 10))  # 隨機(jī)整數(shù)
print(random.random())  # 0-1隨機(jī)小數(shù)
print(random.uniform(2, 6)) # 指定隨機(jī)小數(shù)

16、避免轉(zhuǎn)義給字符串加哪個(gè)字母表示原始字符串?

b"input
" # bytes字節(jié)符,打印以b開頭。
輸出:
b"input
"
-------
r"input
" # 非轉(zhuǎn)義原生字符,經(jīng)處理"
"變成了""和"n"。也就是
表示的是兩個(gè)字符,而不是換行。
輸出:
"input
"
-------
u"input
" # unicode編碼字符,python3默認(rèn)字符串編碼方式。
輸出:
"input
"

17、

Python
,用正則匹配出標(biāo)簽里面的內(nèi)容(“中國(guó)”),其中class的類名是不確定的。

import re
s = "
Python
" print(re.findall(r"
(.*?)
", s))

18、Python中斷言方法舉例?

age = 10
assert 0 < age < 10
--------------------
 Traceback (most recent call last):
  File "F:/MxOnline/110/exam.py", line 69, in 
    assert 0 < age < 10
AssertionError

19、dict中fromkeys的用法

keys = ("info",)
print(dict.fromkeys(keys, ["Gage", "25", "man"]))

20、請(qǐng)用正則表達(dá)式輸出漢字

import re
a = "not 404 found 中國(guó) 2018 我愛你"
r1 = "[a-zA-Z0-9’!"#$%&"()*+,-./:;<=>?@,。?★、…【】《》?“”‘’![]^_`{|}~]+s?"
print(re.sub(r1, "", a))

21、Python2和Python3區(qū)別?列舉5個(gè)

 1.去除了<>,全部改用!=
 2.xrange() 改名為range()
 3.內(nèi)存操作cStringIO改為StringIO
 4.加入nonlocal 作用:可以引用外層非全局變量
 5.zip()、map()和filter()都返回迭代器,而不是生成器,更加節(jié)約內(nèi)存

22、列出Python中可變數(shù)據(jù)類型和不可變數(shù)據(jù)類型,為什么?

 1、可變數(shù)據(jù)類型:list、dict、set
 2、不可變數(shù)據(jù)類型:int/float、str、tuple
 3、原理:可變數(shù)據(jù)類型即公用一個(gè)內(nèi)存空間地址,不可變數(shù)據(jù)類型即每產(chǎn)生一個(gè)對(duì)象就會(huì)產(chǎn)生一個(gè)內(nèi)存地址

23、dict的內(nèi)部實(shí)現(xiàn)?

在Python中,字典是通過哈希表實(shí)現(xiàn)的。也就是說,字典是一個(gè)數(shù)組,而數(shù)組的索引是鍵經(jīng)過哈希函數(shù)處理后得到的。哈希函數(shù)的目的是使鍵均勻地分布在數(shù)組中。由于不同的鍵可能具有相同的哈希值,即可能出現(xiàn)沖突,高級(jí)的哈希函數(shù)能夠使沖突數(shù)目最小化。

24、s = "ajldjlajfdljfffffd",去重并從小到大排序輸出"adfjl"?

s1 = "ajldjlajfdljfffffd"
print("".join(sorted(set(s1))))

25、用lambda函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)相乘?

mul = lambda x, y: x*y
print(mul(2, 4))

26、字典根據(jù)鍵從小到大排序?

info = {"name": "Gage", "age": 25, "sex": "man"}
print(sorted(info.items(), key=lambda x: x[0]))

27、Python獲取當(dāng)前日期?

import time
import datetime
print(datetime.datetime.now())
print(time.strftime("%Y-%m-%d %H:%M:%S"))

28、獲取請(qǐng)求頭的參數(shù)?

from urllib.parse import urlparse, parse_qs
s2 = "/get_feed_list?version_name=5.0.9.0&device_id=12242channel_name=google"
def spiltline(value):
    url = {"site": urlparse(value).path}
    url.update(parse_qs(urlparse(value).query))
    return url

29、例舉五條PEP8 規(guī)范

不要在行尾加分號(hào), 也不要用分號(hào)將兩條命令放在同一行
不要使用反斜杠連接行
不要在返回語句或條件語句中使用括號(hào)
頂級(jí)定義之間空2行, 方法定義之間空1行,頂級(jí)定義之間空兩行
如果一個(gè)類不繼承自其它類, 就顯式的從object繼承

30、Python語言的運(yùn)行機(jī)制

31、Fibonacci數(shù)列

def fab(n):
    a, b = 0, 1
    while n:
        yield b
        a, b = b, a+b
        n -= 1

32、Python三目運(yùn)算

# 若果 a>b 成立  就輸出  a-b  否則 a+b
h = a-b if a>b else a+b

33、單例模式

 class Single(object):
    __isstance = None
    __first_init = False
    def __new__(cls, *args, **kwargs):
        if not cls.__isstance:
            cls.__isstance = object.__new__(cls)
        return cls.__isstance
    def __init__(self, name):
        if not self.__first_init:
            self.name = name
            Singleton.__first_init = True

34、正則匹配優(yōu)先級(jí)


35、遞歸

 def digui(n):
    if n == 1:
        return 1
    else:
        return (n * digui(n-1))

36、統(tǒng)計(jì)字符串每個(gè)單詞出現(xiàn)的次數(shù)

from collections import Counter
s3 = "kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
print(Counter(s3))

37、正則re.complie作用

re.compile是將正則表達(dá)式編譯成一個(gè)對(duì)象,加快速度,并重復(fù)使用

38、filter方法求出列表所有奇數(shù)并構(gòu)造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list(filter(lambda x: x % 2, a)))

39、列表推導(dǎo)式求列表所有奇數(shù)并構(gòu)造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print([x for x in a if x % 2])

40、a=(1,)b=(1),c=("1") 分別是什么類型的數(shù)據(jù)?

print(type((1, ))) # tuple
print(type((1))) # int
print(type(("1"))) # str

41、兩個(gè)列表[1,5,7,9]和[2,2,6,8]合并為[1,2,2,3,6,7,8,9]

l1 = [1, 5, 7, 9]
l2 = [2, 2, 6, 8]
l1.extend(l2)

42、用python刪除文件和用linux命令刪除文件方法

python:os.remove(文件名)
linux: rm 文件名

43、logging模塊的使用?

import logging
logging.basicConfig(level = logging.INFO,format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s")
logger = logging.getLogger(__name__)

logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")

44、寫一段自定義異常代碼

#自定義異常用raise拋出異常
def fn():
    try:
        for i in range(5):
            if i>2:
                raise Exception("數(shù)字大于2了")
    except Exception as ret:
        print(ret)
fn()            ==》數(shù)字大于2了

45、正則表達(dá)式匹配中,(.)和(.?)匹配區(qū)別?

#(.*)是貪婪匹配,會(huì)把滿足正則的盡可能多的往后匹配
#(.*?)是非貪婪匹配,會(huì)把滿足正則的盡可能少匹配
s = "哈哈呵呵"
import re
res1 = re.findall("(.*)", s)
print("貪婪匹配", res1)
res2 = re.findall("(.*?)", s)
print("非貪婪匹配", res2)
-------------------------
輸出:
貪婪匹配 ["哈哈呵呵"]
非貪婪匹配 ["哈哈", "呵呵"]

46、[[1,2],[3,4],[5,6]]一行代碼展開該列表,得出[1,2,3,4,5,6]

a=[[1,2],[3,4],[5,6]]
print([j for i in a for j in i])

47、x="abc",y="def",z=["d","e","f"],分別求出x.join(y)和x.join(z)返回的結(jié)果

#join()括號(hào)里面的是可迭代對(duì)象,x插入可迭代對(duì)象中間,形成字符串,結(jié)果一致
x="abc"
y="def"
z=["d","e","f"]
a=x.join(y)
b=x.join(z)
print(a)
print(b)
均輸出:
dabceabcf

48、舉例說明異常模塊中try except else finally的相關(guān)意義

try..except..else沒有捕獲到異常,執(zhí)行else語句
try..except..finally不管是否捕獲到異常,都執(zhí)行finally語句

49、python中交換兩個(gè)數(shù)值

a,b=1,2
a,b=b,a

50、舉例說明zip()函數(shù)用法

list1 = [1, 2, 3, 5]
list2 = [4, 5, 6]
zipped = zip(list1, list2)
# print(list(zipped))  # [(1, 4), (2, 5), (3, 6)]
# print(list(zip(*zipped)))  # [(1, 2, 3), (4, 5, 6)]

51、a="張明 98分",用re.sub,將98替換為100

import re
a="張明 98分"
ret=re.sub(r"d+","100",a)
print(ret)    

52、a="hello"和b="你好"編碼成bytes類型

a=b"hello"        
b="你好".encode()
print(a,b)
print(type(a),type(b))

53、[1,2,3]+[4,5,6]的結(jié)果是多少?

print([1,2,3]+[4,5,6]) # [1, 2, 3, 4, 5, 6]

54、提高python運(yùn)行效率的方法

1、使用生成器,因?yàn)榭梢怨?jié)約大量?jī)?nèi)存
2、循環(huán)代碼優(yōu)化,避免過多重復(fù)代碼的執(zhí)行
3、核心模塊用Cython  PyPy等,提高效率
4、多進(jìn)程、多線程、協(xié)程
5、多個(gè)if elif條件判斷,可以把最有可能先發(fā)生的條件放到前面寫,這樣可以減少程序判斷的次數(shù),提高效率

55、遇到bug如何處理

1、細(xì)節(jié)上的錯(cuò)誤,通過print()打印,能執(zhí)行到print()說明一般上面的代碼沒有問題,分段檢測(cè)程序是否有問題,如果是js的話可以alert或console.log
2、如果涉及一些第三方框架,會(huì)去查官方文檔或者一些技術(shù)博客。
3、對(duì)于bug的管理與歸類總結(jié),一般測(cè)試將測(cè)試出的bug用teambin等bug管理工具進(jìn)行記錄,然后我們會(huì)一條一條進(jìn)行修改,修改的過程也是理解業(yè)務(wù)邏輯和提高自己編程邏輯縝密性的方法,我也都會(huì)收藏做一些筆記記錄。
4、導(dǎo)包問題、城市定位多音字造成的顯示錯(cuò)誤問題

56、list=[2,3,5,4,9,6],從小到大排序,不許用sort,輸出[2,3,4,5,6,9]

def quicksort(list):
    if len(list)<2:
        return list
    else:
        midpivot = list[0]
        lessbeforemidpivot = [i for i in list[1:] if i<=midpivot]
        biggerafterpivot = [i for i in list[1:] if i > midpivot]
        finallylist = quicksort(lessbeforemidpivot)+[midpivot]+quicksort(biggerafterpivot)
        return finallylist

print quicksort([2,3,5,4,9,6])

57、兩數(shù)相除保留兩位小數(shù)

print(round(5/3, 2))

58、正則匹配,匹配日期2018-03-20

import re
print(re.findall("((?:(?:[2468][048]00|[13579][26]00|[1-9]d0[48]|[1-9]d[2468][048]|[1-9]d[13579][26])/(?:0?2/(?:0[1-9]|0?[1-9](?=D)|[12]d)))|(?:(?:[12]d{3})/(?:(?:0?2/(?:0[1-9]|0?[1-9](?=D)|1d|2[0-8]))|(?:0?[3578]/(?:0[1-9]|0?[1-9](?=D)|[12]d|3[01]))|(?:0?[469]/(?:0[1-9]|0?[1-9](?=D)|[12]d|30))|(?:1[02]/(?:0[1-9]|0?[1-9](?=D)|[12]d|3[01]))|(?:11/(?:0[1-9]|0?[1-9](?=D)|[12]d|30))|(?:0?1/(?:0[1-9]|0?[1-9](?=D)|[12]d|3[01])))))", "Date:2018/03/20"))

59、使用pop和del刪除字典中的"name"字段,dic={"name":"zs","age":18}

dic = {"name": "zs", "age": 18}
dic.pop("name")
del dic["age"]
print(dic) # {}

60、簡(jiǎn)述多線程、多進(jìn)程

進(jìn)程是資源(CPU、內(nèi)存等)分配的基本單位,它是程序執(zhí)行時(shí)的一個(gè)實(shí)例。
線程是程序執(zhí)行時(shí)的最小單位,它是進(jìn)程的一個(gè)執(zhí)行流。
進(jìn)程有自己的獨(dú)立地址空間,每啟動(dòng)一個(gè)進(jìn)程,系統(tǒng)就會(huì)為它分配地址空間,建立數(shù)據(jù)表來維護(hù)代碼段、堆棧段和數(shù)據(jù)段,這種操作非常昂貴
線程是共享進(jìn)程中的數(shù)據(jù)的,使用相同的地址空間,因此CPU切換一個(gè)線程的花費(fèi)遠(yuǎn)比進(jìn)程要小很多,同時(shí)創(chuàng)建一個(gè)線程的開銷也比進(jìn)程要小很多

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43356.html

相關(guān)文章

  • 前端試筆試題(二)

    1、css3新增偽類有哪些?2、html5有哪些新特性、移除了哪些元素?如何處理HTML5新標(biāo)簽的瀏覽器兼容問題?如何區(qū)分HTML和HTML5?3、使用jquery遇到過哪些問題?你是怎么解決的?4、jquery中有哪些方法可以遍歷節(jié)點(diǎn)?5、在ajax中data主要有幾種方式?6、自定義指令(v-check、v-focus)的方法有哪些?它主要有哪些鉤子函數(shù)? 隨記:我拿到這個(gè)題目的時(shí)候,我看到紙...

    Batkid 評(píng)論0 收藏0
  • 前端試筆試題(二)

    1、css3新增偽類有哪些?2、html5有哪些新特性、移除了哪些元素?如何處理HTML5新標(biāo)簽的瀏覽器兼容問題?如何區(qū)分HTML和HTML5?3、使用jquery遇到過哪些問題?你是怎么解決的?4、jquery中有哪些方法可以遍歷節(jié)點(diǎn)?5、在ajax中data主要有幾種方式?6、自定義指令(v-check、v-focus)的方法有哪些?它主要有哪些鉤子函數(shù)? 隨記:我拿到這個(gè)題目的時(shí)候,我看到紙...

    livem 評(píng)論0 收藏0
  • 前端試筆試題(二)

    1、css3新增偽類有哪些?2、html5有哪些新特性、移除了哪些元素?如何處理HTML5新標(biāo)簽的瀏覽器兼容問題?如何區(qū)分HTML和HTML5?3、使用jquery遇到過哪些問題?你是怎么解決的?4、jquery中有哪些方法可以遍歷節(jié)點(diǎn)?5、在ajax中data主要有幾種方式?6、自定義指令(v-check、v-focus)的方法有哪些?它主要有哪些鉤子函數(shù)? 隨記:我拿到這個(gè)題目的時(shí)候,我看到紙...

    piapia 評(píng)論0 收藏0
  • 前端最強(qiáng)經(jīng)匯總

    摘要:獲取的對(duì)象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對(duì)象即使沒有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對(duì)于一個(gè)光禿禿的元素,方法返回對(duì)象中屬性值如果有就是據(jù)我測(cè)試不同環(huán)境結(jié)果可能有差異而就是。 花了很長(zhǎng)時(shí)間整理的前端面試資源,喜歡請(qǐng)大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...

    wangjuntytl 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<