日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

2020 年最全 Python 面试题汇总 (一)

發布時間:2024/10/8 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2020 年最全 Python 面试题汇总 (一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@Author:Runsen

大四刷題拼offer系列,不拼不行啊。我先刷下牛客網的Python的題目和知識點,適當的記錄下自己做錯的題目。

文章目錄

  • 1、Pythno邏輯運算符
  • 2、求100億有多少素數
  • 3、深淺復制
  • 4、裝飾器
  • 5、random模塊
  • 6、元組的定義
  • 7、類定義
  • 8、函數對象定義
  • 9、字典的聲明定義
  • 10、字符串格式化
  • 11、 內存管理
  • 12、正則表達式
  • 13、切片
  • 14、復數
  • 15、 切片不受內建類型的限制
  • 16、關鍵詞return
  • 17、轉義字符串
  • 18、global
  • 19、標識符
  • 20、socket

1、Pythno邏輯運算符

下列代碼運行結果是? a = 'a' print a > 'b' or 'c' # 'C'

由于比較運算符優先級大于邏輯運算符,根據上表,當 a > ‘b’,即 ‘a’ > ‘b’ 為 Fasle 時(‘a’ 的 ASCII 碼比 ‘b’ 小),返回值為 ‘c’,故答案選C。

2、求100億有多少素數

假設可以不考慮計算機運行資源(如內存)的限制,以下 python3 代碼的預期運行結果是:()

import math def sieve(size):sieve= [True] * sizesieve[0] = Falsesieve[1] = Falsefor i in range(2, int(math.sqrt(size)) + 1):k= i * 2while k < size:sieve[k] = Falsek += ireturn sum(1 for x in sieve if x) print(sieve(10000000000))A、455052510 B、455052511 C、455052512 D、455052513

本題是求0-100億之間的素數的個數,首先你要讀懂代碼。讀懂代碼后,自己編寫Meissel-Lehmer 算法快速求出0-100億內的素數個數。百度100億以內的素數,百度沒有。但是我們可以記住這個值,關于Meissel-Lehmer算法。

3、深淺復制

本題考查的是 dict 類型中 copy() 方法的使用。

kvps = { '1' : 1, '2' : 2 } theCopy = kvps.copy() kvps['1'] = 5 sum = kvps['1'] + theCopy['1'] print(sum) # 6

下面,我們看一個容易出錯的例子。

import copyd = {'1': [1, 1, 1], '2': 2} # 方法1:賦值引用,copy1和d指向同一個對象 copy1 = d # 方法2:淺復制,復制生成新對象copy2,但是只復制一層,[1, 1, 1]為兩者共同子對象, copy2 = d.copy() # 方法3:淺復制,調用copy模塊中的方法,同方法2 copy3 = copy.copy(d) # 方法3:深復制,復制生成新對象copy4,并且遞歸復制所有子對象,所以d中原來指向[1, 1, 1]的改動不會影響深復制生成的子對象[1, 1, 1] copy4 = copy.deepcopy(d)d['1'][0] = 3 d['2'] = 3 print(copy1, copy2, copy3, copy4) 打印結果 {'1': [3, 1, 1], '2': 3} {'1': [3, 1, 1], '2': 2} {'1': [3, 1, 1], '2': 2} {'1': [1, 1, 1], '2': 2}

4、裝飾器

以下程序輸出為:

def w1():print('正在裝飾')def inner():print('正在驗證權限')return inner()w1() # 正在裝飾 正在驗證權限

如果外層函數返回的是一個函數名的話,運行結果應該是:正在裝飾

如果外層函數返回的是函數調用的話,運行結果是:正在裝飾 正在驗證權限

5、random模塊

下面的python3函數,如果輸入的參數n非常大,函數的返回值會趨近于以下哪一個值

import random def foo(n): random.seed()c1 = 0c2 = 0for i in range(n):x = random.random()y = random.random()r1 = x * x + y * yr2 = (1 - x) * (1 - x) + (1 - y) * (1 - y)if r1 <= 1 and r2 <= 1:c1 += 1else:c2 += 1return c1 / c2

random.random()生成0和1之間的隨機浮點數float,上面代碼是計算兩個四分之一的圓的交集,最終得到的結果是
π?24?π\frac{\pi-2}{4-\pi}4?ππ?2?

具體解決的如下圖所示。

6、元組的定義

下列哪種不是Python元組的定義方式?

A、(1) B、(1, ) C、(1, 2) D、(1, 2, (3, 4))

Python 中的 tuple 結構為 “不可變序列”,用小括號表示。為了區別數學中表示優先級的小括號,當 tuple 中只含一個元素時,需要在元素后加上逗號。(1)會被python認為是int類型,所以正確答案必須是(1)

>>> print(type((1,))) <class 'tuple'> >>> print(type((1))) <class 'int'>

7、類定義

有如下類定義,下列描述錯誤的是?

class A(object):passclass B(A):passb = B()A、isinstance(b, A) == True B、isinstance(b, object) == True C、issubclass(B, A) == True D、issubclass(b, B) == True 答案

isinstance(object,classinfo),用于判斷object是否是classinfo的一個實例,或者object是否是classinfo類的子類的一個實例,如果是返回True。類似 type()。如果要判斷兩個類型是否相同推薦使用 isinstance()。

issubclass(class,classinfo),用于判斷class是否是classinfo類的子類,如果是返回True.

class A(object):pass class B(A):pass b = B() print(isinstance(b,A)) # True print(isinstance(b,B)) # True print(type(b) is B) # True print(type(b) is A) # False print(issubclass(B,A)) # True print(issubclass(b,B)) # TypeError: issubclass() arg 1 must be a class

8、函數對象定義

Python中函數是對象,描述正確的是?

A、函數可以賦值給一個變量 B、函數可以作為元素添加到集合對象中 C、函數可以作為參數值傳遞給其它函數 D、函數可以當做函數的返回值

上面選擇全部正確。在 Python 中萬物皆為對象,函數也不例外,函數作為對象可以賦值給一個變量、可以作為元素添加到集合對象中、可作為參數值傳遞給其它函數,還可以當做函數的返回值,這些特性就是第一類對象所特有的。

9、字典的聲明定義

下面有關字典的聲明錯誤的是:

A、dic = {} B、dic = {100:200} C、dic = {(1,2,3):'test'} D、dic = {[1,2,3]:'test'} 答案

字典本身是可變數據類型,字典的鍵記住兩點:

  • 唯一:同一個字典中的鍵必須唯一,如果出現多個相同的鍵,則最新的鍵會被記住;
  • 不可變:鍵是不可變數據類型,使用可以是int,string,float,tuple

補充可變(mutable)對象類型 :list、dict、set、bytearray、user-defined classes
不可變(immutable)對象類型: int、float、decimal、complex、bool、str、tuple、range、bytes

10、字符串格式化

下述字符串格式化語法正確的是?

正確答案: D A、'GNU's Not %d %%' % 'UNIX' B、'GNU\'s Not %d %%' % 'UNIX' C、'GNU's Not %s %%' % 'UNIX' D、'GNU\'s Not %s %%' % 'UNIX'

python里面%d表數字,%s表示字符串,%%表示一個%。單引號內嵌套單引號需要轉義字符/;單引號內嵌套雙引號不需要嵌套。雙引號內嵌套雙引號需要轉義字符/;雙引號內引用單引號不需要轉義字符。

11、 內存管理

關于Python內存管理,下列說法錯誤的是

正確答案: B A、變量不必事先聲明 B、變量無須先創建和賦值而直接使用 C、變量無須指定類型 D、可以使用del釋放資源

本題答案選 B,原因如下:

Python 是弱類型腳本語言,變量就是變量,沒有特定類型,因此不需要聲明。
但每個變量在使用前都必須賦值,變量賦值以后該變量才會被創建。
用 del 語句可以釋放已創建的變量(已占用的資源)。

12、正則表達式

下列程序打印結果為

import re str1 = "Python's features" str2 = re.match( r'(.*)on(.*?) .*', str1, re.M|re.I) print( str2.group(1))

正確答案: B 你的答案: B (正確)

A、Python B、Pyth C、thon’s D、Python‘s features

re模塊實現正則的功能 :re.match(正則表達式,要匹配的字符串,[匹配模式])

要匹配的字符串為str1 = "Python's features"

正則表達式r'(.*)on(.*?) .*'

  • r表示后面的字符串是一個普通字符串(比如\n會譯為\和n,而不是換行符)
  • ()符號包住的數據為要提取的數據,通常與.group()函數連用。
  • .匹配單個任意字符
  • *匹配前一個字符出現0次或無限次
  • ?匹配前一個字符出現0次或1次
  • (.*)提取的數據為str1字符串中on左邊的所有字符,即Pyth
  • (.*?)提取的數據為str1中on右邊,空格前面,即’s
  • .group(0)輸出的是匹配正則表達式整體結果.
  • .group(1) 列出第一個括號匹配部分,.group(2) 列出第二個括號匹配部分

13、切片

若 a = range(100),以下哪些操作是合法的?

正確答案: A B C D 你的答案: A B C (錯誤)

A、a[-3] B、a[2:13] C、a[::3] D、a[2-3]

首先:a=range(100)的意思的a是一個1到100排序

A:a[-3] D:a[2-3]-->a[-1]

取a當中倒數第i個數–>a[-1]=99;a[-2]=98;a[-3]=97。
所以A的輸出結果是97,D的輸出結果是99

B:a[2:13]取排列a第2到13個數,其結果是2到13的一個排列, 不包括13,前閉后開

C:a[::3]實際上是a[start:end:step]。根據a=range(100)可得start的默認值是1,end的默認值是100,step的默認值是1。

14、復數

關于Python中的復數,下列說法錯誤的是()

正確答案: C 你的答案: B (錯誤)

A、表是復數的語法是real + image j B、實部和虛部都是浮點數 C、虛部必須后綴j,且必須小寫 D、方法conjugate返回復數的共軛復數

關于python中的復數:

1、虛數不能單獨存在,它們總是和一個值為 0.0 的實數部分一起構成一個復數

2、復數由實數部分和虛數部分構成

3、表示虛數的語法:real+imagej

4、實數部分和虛數部分都是浮點數

5、虛數部分必須有后綴j或J

15、 切片不受內建類型的限制

對于以下代碼,描述正確的是:

list = ['1', '2', '3', '4', '5'] print (list[10:])

正確答案: D 你的答案: A (錯誤)

A、導致 IndexError B、輸出['1', '2', '3', '4', '5'] C、編譯錯誤 D、輸出[]

D 切片不受內建類型的限制。如果出現了[index:],返回是[]

16、關鍵詞return

關于return說法正確的是( )
正確答案: B D 你的答案: A B D (錯誤)

A、python函數中必須有return B、return可以返回多個值 C、return沒有返回值時,函數自動返回Null D、執行到return時,程序將停止函數內return后面的語句

A. Python函數可以沒有return,比如直接pass

C. return沒有返回值時,函數自動返回None,Python沒有Null。None是空對象,Null是空字符串!

  • return會跳出函數(遇到它,函數就結束)
  • break會跳出當前循環
  • continue 跳出當前循環并執行下一次

17、轉義字符串

What gets printed?()

print (r"\nwoow")

正確答案: C 你的答案: C (正確)

A、new line then the string: woow B、the text exactly like this: r"\nwoow" C、the text like exactly like this: \nwoow D、the letter r and then newline then the text: woow E、the letter r then the text like this: nwoow

Python 中字符串的前導 r 代表原始字符串標識符,該字符串中的特殊符號不會被轉義,適用于正則表達式中繁雜的特殊符號表示。

最典型的例子,如要輸出字符串\n,由于反斜杠的轉義,因此一般的輸出語句為:

print("\\n")

這里的\\將被轉義為\。而采用原始字符串輸出時,則不會對字符串進行轉義:

print (r"\n")

因此本題答案為 C,輸出 \nwoow。注意前導標識符r 不會被輸出,只起標記作用。

18、global

What gets printed?()

counter = 1 def doLotsOfStuff(): global counterfor i in (1, 2, 3): counter += 1 doLotsOfStuff() print (counter)

正確答案: C 你的答案: C(正確)

A、1 B、3 C、4 D、7

此題不難,主要是考察 global 的意義,即在局部作用域 doLotsOfStuff() 函數中,聲明對全局作用域中的 counter 變量的引用,當內部作用域想修改外部變量時,需要使用global聲明。

最后要注意第 5 行的坑,是 counter += 1 而不是 counter += i ,因此答案是 4 而不是 7,選答案 C。

19、標識符

下面哪個不是Python合法的標識符

正確答案: B 你的答案: B (正確)

A、int32 B、40XL C、self D、name

Python 中的標識符不能以數字開頭,這也是普遍編程語言的通用規則:

1)第一個字符必須是字母表中字母或下劃線 _ 。
2)標識符的其他的部分由字母、數字和下劃線組成。
3)標識符對大小寫敏感。
4)不可以是python中的關鍵字,如False、True、None、class等。

注意:self不是python中的關鍵字。類中參數self也可以用其他名稱命名,但是為了規范和便于讀者理解,推薦使用self。

20、socket

下列關于python socket操作敘述正確的是( )

正確答案: C D 你的答案: C (錯誤)

A、使用recvfrom()接收TCP數據 B、使用getsockname()獲取連接套接字的遠程地址 C、使用connect()初始化TCP服務器連接 D、服務端使用listen()開始TCP監聽

sk.recv(bufsize[,flag]):接受套接字的數據。數據以字符串形式返回,bufsize指定最多可以接收的數量。flag提供有關消息的其他信息,通常可以忽略。

sk.recvfrom(bufsize[.flag]):與recv()類似,但返回值是(data,address)。其中data是包含接收數據的字符串,address是發送數據的套接字地址。

sk.getsockname():返回套接字自己的地址。通常是一個元組(ipaddr,port)

sk.connect(address):連接到address處的套接字。一般,address的格式為元組(hostname,port),如果連接出錯,返回socket.error錯誤。

sk.listen(backlog):開始監聽傳入連接。backlog指定在拒絕連接之前,可以掛起的最大連接數量。

如果你想跟博主建立親密關系,可以關注博主,或者關注博主公眾號“Python之王”,了解一個非本科程序員是如何成長的。
博主ID:潤森,希望大家點贊、評論、收藏

總結

以上是生活随笔為你收集整理的2020 年最全 Python 面试题汇总 (一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。