【16】進大廠必須掌握的面試題-100個python面試

我們整理了Python面試的主要問題清單,分為7個部分:

  • 基本面試問題
  • OOPS面試問題
  • 基本的Python程式
  • Python庫面試問題
  • 數據分析面試題
  • 選擇題(MCQ)

基本的Python面試問題

Q1。Python中的列表和元組有什麼區別?

LIST TUPLES
列表是可變的,即可以編輯。 元組是 不可變的(元組是無法編輯的列表)。
列表比元組慢。 元組比列錶快。
語法:list_1 = [10,’全棧程式設計師社區’,20] 語法:tup_1 =(10,’全棧程式設計師社區’,20)

Q2。Python的主要功能是什麼?

  • Python是一種解釋型語言。這意味著,與C及其變種之類的語言不同,Python無需在運行前進行編譯。其他解釋語言包括PHPRuby
  • Python是動態類型的,這意味著您在聲明變數或類似的東西時不需要聲明變數的類型。您可以做類似的事情x=111 ,然後x="I'm mushiming"沒有錯誤
  • Python非常適合面向對象的編程,因為它允許定義類以及組成和繼承。Python沒有訪問說明(如C ++的publicprivate)。
  • 在Python中,函數一流的對象。這意味著可以將它們分配給變數,從其他函數返回並傳遞給函數。類也是一流的對象
  • 編寫Python程式碼速度很快,但運行它通常比編譯語言要慢。幸運的是,Python允許包含基於C的擴展,因此可以消除瓶頸,並且經常可以解決瓶頸。該numpy的包就是一個很好的例子,它真的相當快的,因為很多數量的運算Python實際上是不參與的。
  • Python在許多領域都有使用-Web應用程式,自動化,科學建模,大數據應用程式等等。它也經常用作「膠水」程式碼,以使其他語言和組件發揮出色。

Q3。python是什麼類型的語言?編程還是腳本?

回答: Python能夠編寫腳本,但從一般意義上講,它被認為是一種通用程式語言。

Q4。Python是一種解釋語言嗎?

回答:解釋語言是在運行時之前不在機器級別程式碼中的任何程式語言。因此,Python是一種解釋型語言。

Q5。什麼是pep 8?

回答: PEP代表Python增強建議書。這是一組規則,用於指定如何格式化Python程式碼以實現最大的可讀性。

Q6。如何在Python中管理記憶體?

答:

  1. python中的記憶體管理由Python專用堆空間管理。所有Python對象和數據結構都位於私有堆中。程式設計師無權訪問此私有堆。python解釋器代替了這個。
  2. Python對象的堆空間分配是由Python的記憶體管理器完成的。核心API允許訪問一些工具,以便程式設計師進行編碼。
  3. Python還具有一個內置的垃圾收集器,該垃圾收集器回收所有未使用的記憶體,並使其可用於堆空間。

Q7。Python中的命名空間是什麼?

回答:命名空間是用於確保名稱唯一以避免命名衝突的命名系統。

Q8。什麼是PYTHONPATH?

回答:這是一個環境變數,在導入模組時使用。每當導入模組時,都會查找PYTHONPATH以檢查各個目錄中是否存在導入的模組。解釋器使用它來確定要載入哪個模組。

Q9。什麼是python模組?命名Python中一些常用的內置模組?

回答: Python模組是包含Python程式碼的文件。該程式碼可以是函數類或變數。Python模組是包含可執行程式碼的.py文件。

一些常用的內置模組是:

  • 作業系統-os
  • 系統-sys
  • 數學-math
  • 隨機-random
  • 資料時間-data time
  • JSON格式

Q10.Python中的局部變數和全局變數是什麼?

全局變數:

在函數外部或全局空間中聲明的變數稱為全局變數。程式中的任何函數都可以訪問這些變數。

局部變數:

在函數內部聲明的任何變數都稱為局部變數。此變數存在於局部空間而不是全局空間中。

例:

a=2
def add():
b=3
c=a+b
print(c)
add()

輸出: 5

當您嘗試在函數add()之外訪問局部變數時,它將引發錯誤。

Q11。python是否區分大小寫?

答:是的。Python是區分大小寫的語言。

Q12。什麼是Python中的類型轉換?

回答:類型轉換是指將一種數據類型轉換為另一種數據類型。

int() –將任何數據類型轉換為整數類型

float() –將任何數據類型轉換為float類型

ord() –將字元轉換為整數

hex()–將整數轉換為十六進位

oct() –將整數轉換為八進位

tuple()–此函數用於轉換為元組。

set()–此函數在轉換為set後返回類型。

list()– 此函數用於將任何數據類型轉換為列表類型。

dict()– 此函數用於將順序(鍵,值)的元組轉換為字典。

str()– 用於將整數轉換為字元串。

複數(實數,imag)– 此函數將實數轉換為複數(實數,imag)。

Q13。如何在Windows上安裝Python並設置路徑變數?

回答:要在Windows上安裝Python,請執行以下步驟:

  • 從以下鏈接安裝python:https : //www.python.org/downloads/
  • 將其安裝在您的PC上。在命令提示符下使用以下命令查找PC上PYTHON的安裝位置:cmd python。
  • 然後轉到高級系統設置,添加一個新變數,並將其命名為PYTHON_NAME,然後粘貼複製的路徑。
  • 查找路徑變數,選擇其值,然後選擇「編輯」。
  • 如果該值不存在,請在該值的末尾添加分號,然後鍵入%PYTHON_HOME%

Q14。python是否需要縮進?

回答:縮進對於Python是必需的。它指定一個程式碼塊。循環,類,函數等中的所有程式碼都在縮進塊中指定。通常使用四個空格字元來完成。如果您的程式碼沒有必要縮進,那麼它將無法正確執行,並且也會引發錯誤。

Q15。Python數組和列表有什麼區別?

回答:在Python中,數組和列表具有相同的數據存儲方式。但是,數組只能容納一個數據類型元素,而列表可以容納任何數據類型元素。

例:

import array as arr
My_Array=arr.array('i',[1,2,3,4])
My_list=[1,'system_mush',1.20]
print(My_Array)
print(My_list)

輸出:

array('i', [1, 2, 3, 4]) [1, 'system_mush', 1.2]

Q16。Python中的函數是什麼?

回答:函數是僅在調用時才執行的程式碼塊。要定義Python函數,可以使用def關鍵字。

例:

def Newfunc():
print("您好,歡迎關注Java架構師社區公眾號")
Newfunc(); #calling the function

輸出:您好,歡迎關注Java架構師社區公眾號

Q17。什麼是__init__?

回答: __init__是Python中的方法或構造函數。創建類的新對象/實例時,將自動調用此方法以分配記憶體。所有類都具有__init__方法。

這是一個如何使用它的例子。

class Employee:
def __init__(self, name, age,salary):
self.name = name
self.age = age
self.salary = 20000
E1 = Employee("XYZ", 23, 20000)
# E1 is the instance of class Employee.
#__init__ allocates memory for E1. 
print(E1.name)
print(E1.age)
print(E1.salary)

輸出:

XYZ
23
20000

Q18。什麼是lambda函數?

回答:匿名函數稱為lambda函數。此函數可以具有任意數量的參數,但是只能有一個語句。

例:

a = lambda x,y : x+y
print(a(5, 6))

輸出: 11

Q19。Python中的Self是什麼?

回答:

Self是類的實例或對象。在Python中,這明確包含為第一個參數。但是,在Java中不是這種情況,它是可選的。它有助於區分具有局部變數的類的方法和屬性。

init方法中的self變數引用新創建的對象,而其他方法中的self變數引用其方法被調用的對象。

Q20。 什麼是breakcontinuepass

Break 當滿足某些條件並將控制權轉移到下一條語句時,允許循環終止。
Continue 當滿足某些特定條件並將控制權轉移到循環的開始時,允許跳過循環的某些部分
Pass 在語法上需要一些程式碼塊,但想跳過其執行時使用。這基本上是一個空操作。當執行此操作時,沒有任何反應。

Q21。 [::-1}是做什麼的?

回答: [::-1]用於反轉數組或序列的順序。

例如:

import array as arr
My_Array=arr.array('i',[1,2,3,4,5])
My_Array[::-1]

輸出:array(’i’,[5,4,3,2,1])

[::-1]重印有序數據結構(如數組或列表)的反向副本。原始數組或列表保持不變。

Q22。您如何在Python中將列表項隨機化?

答: 請看下面的例子:

from random import shuffle
x = ['Keep', 'The', 'Blue', 'Flag', 'Flying', 'High']
shuffle(x)
print(x)

以下程式碼的輸出如下。

['Flying', 'Keep', 'Blue', 'High', 'The', 'Flag']

Q23。什麼是python迭代器?

回答:迭代器是可以遍歷或迭代的對象。

Q24。如何在Python中生成隨機數?

回答: 隨機模組是用於生成隨機數的標準模組。該方法定義為:

import random
random.random

語句random.random()方法返回[0,1)範圍內的浮點數。該函數生成隨機浮點數。隨機類使用的方法是隱藏實例的綁定方法。可以完成Random實例來顯示創建單個執行緒的不同實例的多執行緒程式。在此使用的其他隨機生成器是:

  1. randrange(a,b):選擇一個整數並定義[a,b)之間的範圍。它通過從指定範圍內隨機選擇元素來返回元素。它不會建立範圍對象。
  2. Uniform(a,b):選擇一個在[a,b)範圍內定義的浮點數。Iyt返回該浮點數
  3. normalvariate(mean,sdev):用於正態分布,其中mu是平均值,而sdev是用於標準差的sigma。
  4. 使用和實例化的Random類創建一個獨立的多個隨機數生成器。

Q25。range和xrange有什麼區別?

回答: 就功能而言,在大多數情況下,xrange和range完全相同。它們都提供了一種生成整數列表供您使用的方法,但是您可以隨意使用。唯一的區別是range返回一個Python列表對象,而x range返回一個xrange對象。

這意味著xrange在運行時實際上不會像range那樣生成靜態列表。它使用稱為yield的特殊技術根據需要創建值。該技術與一種稱為生成器的對象一起使用。這意味著,如果您的範圍非常大,則想生成一個列表(例如十億),則可以使用xrange函數。

如果您有一個真正的記憶體敏感系統(例如正在使用的手機),則尤其如此,因為range將使用儘可能多的記憶體來創建整數數組,這可能導致記憶體錯誤並使您的崩潰程式。

Q26。你如何用python寫注釋?

回答: Python中的注釋以#字元開頭。但是,有時也可以使用docstrings(用三引號引起來的字元串)進行注釋。

例:

#Comments in Python start like this
print("Comments in Python start with a #")

輸出: Python中的注釋以#開頭

Comments in Python start with a #

Q27。什麼是 pickling和unpickling

回答: Pickle模組接受任何Python對象並將其轉換為字元串表示形式,並使用轉儲函數將其轉儲到文件中,此過程稱為pickling。從存儲的字元串表示形式檢索原始Python對象的過程稱為unpickling

Q28。python中的生成器是什麼?

回答:返回可迭代項目集的函數稱為生成器。

Q29。您將如何大寫字元串的第一個字母?

回答:在Python中,capitalize()方法將字元串的首字母大寫。如果字元串開頭已經由大寫字母組成,那麼它將返回原始字元串。

Q30。您如何將字元串轉換為全部小寫?

回答:要將字元串轉換為小寫,可以使用lower()函數。

例:

stg='ABCD'
print(stg.lower())

輸出:

abcd

Q31。如何在python中注釋多行?

回答:多行注釋出現在多行中。所有要注釋的行都以#開頭。您也可以使用非常好的 快捷方式注釋多行。您需要做的就是按住ctrl鍵,並 在要包含#個字元的任何地方單擊滑鼠左鍵,然後只鍵入一次#。這將注釋您引入游標的所有行。

Q32。Python中的文檔字元串是什麼?

回答:文檔字元串實際上不是注釋,但是它們是 文檔字元串。這些文檔字元串用三引號引起來。它們沒有分配任何變數,因此有時也可以用作注釋的目的。

例:

"""
Using docstring as a comment.
This code divides 2 numbers
"""
x=8
y=4
z=x/y
print(z)

輸出: 2.0

Q33。操作符和操作符的目的是什麼?

回答:運算符是特殊功能。它們採用一個或多個值併產生相應的結果。

is:當兩個操作數為true時返回true(例如:「 a」為「 a」)

not:返回布爾值的倒數

in:檢查某個元素是否以某種順序存在

Q34。Python中help()和dir()函數的用法是什麼?

回答: Help()和dir()這兩個函數都可以從Python解釋器訪問,並用於查看內置函數的合併轉儲。

  1. Help()函數:help()函數用於顯示文檔字元串,還可以幫助您查看與模組,關鍵字,屬性等有關的幫助。
  2. Dir()函數:dir()函數用於顯示定義的符號。

Q35。每當Python退出時,為什麼不取消分配所有記憶體?

答:

  1. 每當Python退出時,尤其是那些循環引用其他對象或從全局名稱空間引用的對象的Python模組都不會總是被取消分配或釋放。
  2. 不能取消分配C庫保留的那些記憶體部分。
  3. 退出時,由於具有自己有效的清除機制,Python會嘗試取消分配/銷毀所有其他對象。

Q36。Python中的字典是什麼?

回答: Python中的內置數據類型稱為字典。它定義了鍵和值之間的一對一關係。字典包含一對鍵及其對應的值。字典由鍵索引。

讓我們舉個例子:

下面的示例包含一些鍵。國家,首都和總理。它們對應的值分別是印度,德里和莫迪。

dict={'Country':'India','Capital':'Delhi','PM':'Modi'}
print dict[Country]

輸出:India

print dict[Capital]

輸出:Delhi

print dict[PM]

輸出:Modi

Q37。如何在python中使用三元運算符?

答案: 三元運算符是用於顯示條件語句的運算符。它由true或false值以及必須對其評估的語句組成。

語法

三元運算符將為:
[on_true]如果[expression]否則[on_false] x,y = 25,50big = x如果x <y否則

例:

該表達式的求值方式類似於x < y else y,在這種情況下,如果x < y為true,則該值以big = x返回,如果不正確,則將發送big = y。

Q38。這是什麼意思: args, * kwargs?為什麼我們要使用它?*

回答: 當我們不確定要向函數傳遞多少個參數時,或者如果要將存儲的參數列表或元組傳遞給函數時,可以使用* args。** kwargs在我們不知道將多少個關鍵字參數傳遞給一個函數時使用,或者可用於將字典的值作為關鍵字參數傳遞。標識符args和kwargs是一個約定,您也可以使用* bob和** billy,但這並不明智。

Q39。len()是做什麼的?

Ans:用於確定字元串,列表,數組等的長度。

例:

stg='ABCD'
len(stg)

Q40。解釋Python中”re”模組的split(),sub(),subn()方法。

回答: 為了修改字元串,Python的「 re」模組提供了3種方法。他們是:

  • split()–使用正則表達式模式將給定的字元串「拆分」為列表。
  • sub()–查找所有與正則表達式模式匹配的子字元串,然後將其替換為其他字元串
  • subn()–它類似於sub(),並且還返回新字元串以及no。更換。

Q41。什麼是負索引,為什麼要使用它們?

回答: Python中的序列已編入索引,並且由正數和負數組成。正數使用「 0」作為第一個索引,使用「 1」作為第二個索引,過程繼續進行。

負數的索引從代表序列中最後一個索引的「 -1」開始,而倒數第二個索引則是「 -2」,並且該序列像正數一樣前移。

負索引用於從字元串中刪除任何換行符,並允許字元串除以S [:-1]給出的最後一個字元外。負索引還用於顯示索引以正確的順序表示字元串。

Q42。 什麼是Python包?

回答: Python軟體包是包含多個模組的名稱空間。

Q43。如何用Python刪除文件?

回答:要在Python中刪除文件,您需要導入OS模組。之後,您需要使用os.remove()函數。

例:

import os
os.remove("xyz.txt")

Q44。python的內置類型是什麼?

回答: Python中的內置類型如下:

  • Integers
  • Floating-point
  • Complex numbers
  • Strings
  • Boolean
  • Built-in functions

Q45。與(嵌套)Python列表相比,NumPy數組具有什麼優勢?

答:

  1. Python的列表是有效的通用容器。它們支援(相當)高效的插入,刪除,附加和連接,並且Python的列表理解使它們易於構造和操作。
  2. 它們有一定的局限性:它們不支援「向量化」操作,例如逐元素加法和乘法,並且它們可以包含不同類型的對象這一事實意味著Python必須存儲每個元素的類型資訊,並且在操作時必須執行類型調度程式碼在每個元素上。
  3. NumPy不僅效率更高;這也更加方便。您可以免費獲得許多矢量和矩陣運算,有時這可以避免不必要的工作。而且它們也得到有效實施。
  4. NumPy數組更快,您可以使用NumPy,FFT,卷積,快速搜索,基本統計資訊,線性代數,直方圖等內置大量內容。

Q46。 如何將值添加到python數組?

回答:可以使用append()extend()insert(i,x) 函數元素添加到數組 。

例:

a=arr.array('d', [1.1 , 2.1 ,3.1] )
a.append(3.4)
print(a)
a.extend([4.5,6.3,6.8])
print(a)
a.insert(2,3.8)
print(a)

輸出:

array(’d’,[1.1,2.1,3.1,3.4])

array(’d’,[1.1,2.1,3.1,3.4,4.5,6.3,6.8])

array(’d’,[1.1,2.1,3.8,3.1,3.4,4.5,6.3,6.8])

Q47。如何刪除值到python數組?

回答:可以使用pop()remove() 方法刪除數組元素 。這兩個函數的區別在於前者返回刪除的值,而後者不返回。

例:

a=arr.array('d', [1.1, 2.2, 3.8, 3.1, 3.7, 1.2, 4.6])
print(a.pop())
print(a.pop(3))
a.remove(1.1)
print(a)

輸出:

4.6

3.1

array(’d’,[2.2,3.8,3.7,1.2])

Q48。 Python是否具有OOps概念?

回答: Python是一種面向對象的程式語言。這意味著可以通過創建對象模型在python中解決任何程式。但是,Python既可以當作過程語言,也可以當作結構語言。

Q49。深層複製和淺層複製有什麼區別?

回答: 創建新實例類型時,使用淺表副本,並且它將複製的值保留在新實例中。淺複製用於複製參考指針,就像複製值一樣。這些引用指向原始對象,並且在類的任何成員中所做的更改也會影響其原始副本。淺拷貝允許更快地執行程式,並且取決於所使用的數據大小。

深度複製用於存儲已複製的值。深層複製不會將引用指針複製到對象。它引用一個對象,並存儲其他對象指向的新對象。在原始副本中所做的更改不會影響使用該對象的任何其他副本。由於為每個被調用的對象製作了某些副本,因此深層複製會使程式的執行速度變慢。

Q50。如何在Python中實現多執行緒?

答:

  1. Python有一個多執行緒程式包,但是如果您想使用多執行緒來加快程式碼速度,那麼使用它通常不是一個好主意。
  2. Python有一個稱為全局解釋器鎖(GIL)的構造。GIL確保您的「執行緒」之一只能在任何一次執行。執行緒獲取GIL,做一些工作,然後將GIL傳遞到下一個執行緒。
  3. 這發生得非常快,以至於人眼似乎您的執行緒正在並行執行,但實際上它們只是使用相同的CPU內核輪流執行。
  4. 所有這些GIL傳遞都會增加執行開銷。這意味著,如果您想使程式碼運行更快,那麼使用執行緒包通常不是一個好主意。

Q51。 在python中進行編譯和鏈接的過程是什麼?

回答: 編譯和鏈接允許正確擴展新擴展名,而不會出現任何錯誤,並且只有在通過編譯過程時才能進行鏈接。如果使用動態載入,則取決於系統提供的樣式。python解釋器可用於提供配置設置文件的動態載入,並將重新構建解釋器。

在此所需的步驟為:

  1. 創建系統編譯器支援的任何名稱和任何語言的文件。例如file.c或file.cpp
  2. 將此文件放在正在使用的發行版的Modules /目錄中。
  3. 在Modules /目錄中存在的Setup.local文件中添加一行。
  4. 使用垃圾郵件file.o運行文件
  5. 成功運行此命令後,可使用頂層目錄上的make命令來重建解釋器。
  6. 如果文件被更改,則使用命令「 make Makefile」運行rebuildMakefile。

Q52。 **什麼是Python庫?列舉幾個。 **

Python庫是Python軟體包的集合。一些最常用的python庫是– Numpy,Pandas,Matplotlib,Scikit-learn等。

Q53。 拆分的用途是什麼?

split()方法用於在Python中分隔給定的字元串。

例:

a="edureka python"
print(a.split())

輸出: [‘edureka’,’python’]

Q54。 如何在python中導入模組?

可以使用import 關鍵字導入模組。您可以通過三種方式導入模組:

例:

import array           #importing using the original module name
import array as arr    # importing using an alias name
from array import *    #imports everything present in the array module

OOPS面試問題

Q55。用一個例子解釋Python中的繼承。

答案: 繼承允許一個類獲取另一類的所有成員(例如屬性和方法)。繼承提供了程式碼可重用性,使創建和維護應用程式變得更加容易。我們繼承的類稱為超類,而繼承的類稱為派生/子類。

它們是Python支援的不同類型的繼承:

  1. 單一繼承–派生類獲取單個超類的成員。
  2. 多級繼承-從基類base1繼承的派生類d1和從base2繼承的d2。
  3. 層次繼承–從一個基類可以繼承任意數量的子類
  4. 多重繼承–派生類繼承自多個基類。

Q56。如何在Python中創建類?

回答: Python中的是使用class關鍵字創建的。

例:

class Employee:
def __init__(self, name):
self.name = name
E1=Employee("abc")
print(E1.name)

輸出: abc

Q57。Python中的猴子修補程式是什麼?

回答: 在Python中,術語「猴子修補程式」僅指運行時對類或模組的動態修改。

考慮以下示例:

# m.py
class MyClass:
def f(self):
print "f()"

然後我們可以像這樣運行猴子修補程式測試:

import m
def monkey_f(self):
print "monkey_f()"
 
m.MyClass.f = monkey_f
obj = m.MyClass()
obj.f()

輸出如下:

monkey_f()

如我們所見,我們使用模組m之外 定義的函數 Monkey_f()MyClassf()的行為進行了一些更改。

Q58。python是否支援多重繼承?

回答:多重繼承意味著一個類可以從多個父類派生。與Java不同,Python確實支援多重繼承。

59.什麼是Python中的多態?

回答:多態性是指採取多種形式的能力。因此,例如,如果父類具有一個名為ABC的方法,則子類也可以具有一個具有相同名稱和參數的ABC方法。Python允許多態。

Q60。在Python中定義封裝?

回答:封裝意味著將程式碼和數據綁定在一起。封裝示例中的Python類。

Q61。您如何在Python中進行數據抽象?

回答:數據抽象僅提供所需的詳細資訊,並從世界中隱藏實現。這可以在Python中通過使用介面和抽象類來實現。

Q62。python是否使用訪問說明符?

回答: Python不會剝奪對實例變數或函數的訪問許可權。Python提出了在變數,函數或方法的名稱前加上單下劃線或雙下劃線的概念,以模仿受保護和專用訪問說明符的行為。

Q63。如何在Python中創建一個空類?

回答:空類是在其塊內未定義任何程式碼的類。可以使用pass 關鍵字創建它 。但是,您可以在類本身之外創建此類的對象。在PYTHON中,PASS命令在執行時不執行任何操作。這是一個空語句。

例如-

class a:
  &nbsp; pass
obj=a()
obj.name="xyz"
print("Name = ",obj.name)

輸出:

名稱= xyz

Q64。object()有什麼作用?

回答:它返回一個無特徵的對象,該對象是所有類的基礎。而且,它不帶任何參數。

基本的Python程式

Q65。用Python編寫程式以執行冒泡排序演算法。

def bs(a):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# a = name of list
  &nbsp; b=len(a)-1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# minus 1 because we always compare 2 adjacent values
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  &nbsp; for x in range(b):
  &nbsp; &nbsp; &nbsp; for y in range(b-x):
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if a[y]>a[y+1]:
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a[y],a[y+1]=a[y+1],a[y]
  &nbsp; return a
a=[32,5,3,6,7,54,87]
bs(a)

輸出: [3、5、6、7、32、54、87]

Q66。用Python編寫程式以生成星形三角形。

def pyfunc(r):
    for x in range(r):
        print(' '*(r-x-1)+'*'*(2*x+1))    
pyfunc(9)

輸出:

        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
*****************

Q67。編寫程式以用Python生成Fibonacci系列。

# Enter number of terms needed&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#0,1,1,2,3,5....
a=int(input("Enter the terms"))
f=0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#first element of series
s=1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#second element of series
if a<=0:
  &nbsp; print("The requested series is
",f)
else:
  &nbsp; print(f,s,end=" ")
  &nbsp; for x in range(2,a):
  &nbsp; &nbsp; &nbsp; next=f+s&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  
  &nbsp; &nbsp; &nbsp; print(next,end=" ")
  &nbsp; &nbsp; &nbsp; f=s
  &nbsp; &nbsp; &nbsp; s=next</pre>

輸出:輸入術語5 0 1 1 2 3

Q68。用Python編寫程式以檢查數字是否為質數。

a=int(input("enter number"))&nbsp; &nbsp; &nbsp;
if a>1:
  &nbsp; for x in range(2,a):
  &nbsp; &nbsp; &nbsp; if(a%x)==0:
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print("not prime")
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break
  &nbsp; else:
  &nbsp; &nbsp; &nbsp; print("Prime")
else:
  &nbsp; print("not prime")

輸出:

輸入數字3

Q69。用Python編寫程式以檢查序列是否是迴文。

a=input("enter sequence")
b=a[::-1]
if a==b:
  &nbsp; print("palindrome")
else:
  &nbsp; print("Not a Palindrome")

輸出:

輸入序列323 palindrome

Q70。編寫一個單行,將計算文件中大寫字母的數量。即使文件太大而無法容納在記憶體中,您的程式碼也應該可以工作。

回答: 讓我們先編寫一個多行解決方案,然後將其轉換為單行程式碼。

with open(SOME_LARGE_FILE) as fh:
count = 0
text = fh.read()
for character in text:
    if character.isupper():
count += 1

現在,我們將嘗試將其轉換為一行。

count sum(1 for line in fh for character in line if character.isupper())

Q71。用Python為數字數據集編寫排序演算法。

回答: 以下程式碼可用於在Python中對列表進行排序:

list = ["1", "4", "0", "6", "9"]
list = [int(i) for i in list]
list.sort()
print (list)

Q72。看下面的程式碼,記下A0,A1,…An的最終值。

A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
A1 = range(10)A2 = sorted([i for i in A1 if i in A0])
A3 = sorted([A0[s] for s in A0])
A4 = [i for i in A1 if i in A3]
A5 = {i:i*i for i in A1}
A6 = [[i,i*i] for i in A1]
print(A0,A1,A2,A3,A4,A5,A6)

回答: 以下將是A0,A1,… A6的最終輸出

A0 = {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4} # the order may vary
A1 = range(0, 10) 
A2 = []
A3 = [1, 2, 3, 4, 5]
A4 = [1, 2, 3, 4, 5]
A5 = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
A6 = [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]

Python庫面試問題

Q73。解釋一下Flask是什麼及其好處?

回答: Flask是基於「 Werkzeug,Jinja2和良好意圖」 BSD許可證的Python Web微框架。Werkzeug和Jinja2是其兩個依賴項。這意味著它將幾乎不依賴外部庫。它使框架變得輕巧,同時幾乎沒有更新依賴性,並且安全漏洞更少。

會話基本上使您能夠記住從一個請求到另一個請求的資訊。在燒瓶中,會話使用簽名的cookie,因此用戶可以查看會話內容並進行修改。如果只有會話具有密鑰Flask.secret_key,則用戶可以修改會話。

Q74。Django比Flask好嗎?

回答: Django和Flask將在網路瀏覽器中鍵入的URL或地址映射為Python中的函數。

與Django相比,Flask簡單得多,但是Flask並沒有為您做很多事情,這意味著您需要指定詳細資訊,而Django為您做了很多工作,其中您不需要做很多工作。Django由預編寫的程式碼組成,用戶需要對其進行分析,而Flask則允許用戶創建自己的程式碼,因此使理解程式碼變得更加簡單。從技術上講,兩者都同樣好,並且都有各自的優缺點。

Q75。提及Django,Pyramid和Flask之間的差異。

答:

  • Flask是一種「微框架」,主要用於具有更簡單要求的小型應用程式。在flask中,您必須使用外部庫。燒瓶可以使用了。
  • 金字塔是為較大的應用程式而構建的。它提供了靈活性,並允許開發人員為他們的項目使用正確的工具。開發人員可以選擇資料庫,URL結構,模板樣式等。金字塔是可配置的。
  • Django也可以像金字塔一樣用於更大的應用程式。它包括一個ORM。

Q76 。討論Django體系結構。

答案: Django MVT模式:

Django體系結構-Python面試問題-Edureka圖: Python面試問題– Django體系結構

開發人員提供模型,視圖和模板,然後將其映射到URL,而Django發揮了神奇的作用將其提供給用戶。

Q77。說明如何在Django中設置資料庫。

回答: 您可以使用命令edit mysite / setting.py,它是一個普通的python模組,模組級別表示Django設置。

Django默認使用SQLite。對於Django用戶而言,這很容易,因為它不需要任何其他類型的安裝。如果您的資料庫選擇不同,則必須與DATABASE「默認」項中的以下鍵相匹配才能匹配資料庫連接設置。

  • 引擎:您可以使用’django.db.backends.sqlite3’,’django.db.backeneds.mysql’,’django.db.backends.postgresql_psycopg2’,’django.db.backends.oracle’等更改資料庫上
  • 名稱:資料庫的名稱。如果您使用SQLite作為資料庫,則資料庫將是電腦上的文件,名稱應為完整的絕對路徑,包括該文件的文件名。
  • 如果您未選擇SQLite作為資料庫,則必須添加密碼,主機,用戶等設置。

Django使用SQLite作為默認資料庫,它將數據作為單個文件存儲在文件系統中。如果您確實有資料庫伺服器-PostgreSQL,MySQL,Oracle,MSSQL-並希望使用它而不是SQLite,請使用資料庫的管理工具為Django項目創建一個新資料庫。無論哪種方式,在您擁有(空)資料庫之後,剩下的就是告訴Django如何使用它。這是項目的settings.py文件進入的位置。

我們將以下程式碼行添加到setting.py文件:

DATABASES = {
     'default': {
          'ENGINE' : 'django.db.backends.sqlite3',
          'NAME' : os.path.join(BASE_DIR, 'db.sqlite3'),
     }
}

Q78。舉例說明如何在Django中編寫VIEW?

答: 這就是我們可以在Django中使用的視圖視圖:

from django.http import HttpResponse
import datetime
 
def Current_datetime(request):
     now = datetime.datetime.now()
     html = "<html><body>It is now %s</body></html> % now
     return HttpResponse(html)

以HTML文檔形式返回當前日期和時間

Q79。提及Django模板的組成。

回答: 模板是一個簡單的文本文件。它可以創建任何基於文本的格式,如XML,CSV,HTML等。模板包含在評估模板時將變數替換為值的變數,以及用於控制模板邏輯的標籤(%tag%)。

Django模板-Python面試問題-Edureka圖: Python面試問題– Django模板

Q80。解釋Django框架中會話的使用?

回答: Django提供了一個會話,使您可以基於每個站點訪問者存儲和檢索數據。Django通過將會話ID cookie放置在客戶端並將所有相關數據存儲在伺服器端來抽象化發送和接收cookie的過程。

Django框架-Python面試問題-Edureka圖:Python面試問題– Django框架

因此數據本身不存儲在客戶端。從安全形度來看,這很好。

Q81。 列出Django中的繼承樣式。

回答: 在Django中,有三種可能的繼承樣式:

  1. 抽象基類:當您只希望父類的類保留您不想為每個子模型鍵入的資訊時,使用此樣式。
  2. 多表繼承:如果要對現有模型進行子類化並且需要每個模型都有自己的資料庫表,則使用此樣式。
  3. 代理模型:如果只想修改模型的Python級別行為,而不更改模型的欄位,則可以使用此模型。

Web Scraping-Python面試問題

Q82。如何使用我已經知道URL地址的Python在本地保存影像?

回答: 我們將使用以下程式碼從URL地址本地保存圖片

import urllib.request
urllib.request.urlretrieve("URL", "local-filename.jpg")

Q83。如何獲取任何URL或網頁的Google快取年齡?

回答: 請使用以下網址格式:

//webcache.googleusercontent.com/search?q=cache:URLGOESHERE

確保將「 URLGOESHERE」替換為要檢索其快取並查看時間的頁面或站點的正確網址。例如,要檢查edureka.co的Google Webcache年齡,您可以使用以下URL:

//webcache.googleusercontent.com/search?q=cache:edureka.co

Q84。您需要從IMDb的前250個電影頁面中抓取數據。它只能包含電影名稱,年份和等級欄位。

答: 我們將使用以下程式碼行:

from bs4 import BeautifulSoup
 
import requests
import sys
 
url = '//www.imdb.com/chart/top'
response = requests.get(url)
soup = BeautifulSoup(response.text)
tr = soup.findChildren("tr")
tr = iter(tr)
next(tr)
 
for movie in tr:
title = movie.find('td', {'class': 'titleColumn'} ).find('a').contents[0]
year = movie.find('td', {'class': 'titleColumn'} ).find('span', {'class': 'secondaryInfo'}).contents[0]
rating = movie.find('td', {'class': 'ratingColumn imdbRating'} ).find('strong').contents[0]
row = title + ' - ' + year + ' ' + ' ' + rating
 
print(row)

上面的程式碼將幫助從IMDb的前250名列表中刪除數據

數據分析– Python面試問題

Q85。Python中的地圖功能是什麼?

回答: map函數在作為第二參數給出的iterable的所有元素上執行作為第一參數給出的功能。如果給定的函數接受多個參數,那麼將給出許多可迭代的變數。#關注鏈接以了解更多類似功能。

Q86。python numpy是否比列表更好?

回答: 由於以下三個原因,我們使用python numpy數組而不是列表:

  1. Less Memory
  2. Fast
  3. Convenient

Q87。如何獲取NumPy數組中N個最大值的索引?

回答: 我們可以使用以下程式碼在NumPy數組中獲得N個最大值的索引:

import numpy as np
arr = np.array([1, 3, 2, 4, 5])
print(arr.argsort()[-3:][::-1])

輸出量

[ 4 3 1 ]

Q88。如何使用Python / NumPy計算百分位數?

答: 我們可以使用以下程式碼計算百分位數

import numpy as np
a = np.array([1,2,3,4,5])
p = np.percentile(a, 50) #Returns 50th percentile, e.g. median
print(p)

輸出量

3

Q89。NumPy和SciPy有什麼區別?

答:

  1. 在理想情況下,NumPy除了數組數據類型和最基本的操作外,將不包含任何內容:索引,排序,重塑,基本的元素函數等。
  2. 所有數字程式碼都將駐留在SciPy中。但是,NumPy的重要目標之一是兼容性,因此NumPy嘗試保留其前任任一個所支援的所有功能。
  3. 因此,NumPy包含一些線性代數函數,即使這些函數更恰當地屬於SciPy。無論如何,SciPy都包含線性代數模組的更多全功能版本,以及許多其他數值演算法。
  4. 如果您正在使用python進行科學計算,則可能應該同時安裝NumPy和SciPy。大多數新功能屬於SciPy,而不是NumPy。

Q90。您如何使用NumPy / SciPy製作3D圖/可視化影像?

回答: 與2D繪圖一樣,3D圖形也超出了NumPy和SciPy的範圍,但就像在2D情況下一樣,存在與NumPy集成的軟體包。Matplotlib在mplot3d子軟體包中提供了基本的3D繪圖,而Mayavi利用強大的VTK引擎提供了多種高品質的3D可視化功能。

選擇題(MCQ)

Q91。以下哪個語句創建字典?(可能有多個正確答案)

a) d = {}
b) d = {「john」:40, 「peter」:45}
c) d = {40:」john」, 45:」peter」}
d) d = (40:」john」, 45:」50」)

答案: b,c和d。

通過指定鍵和值來創建字典。

Q92。地板分隔是哪一個?

a)/ b)// c)% d)沒有提及

答案: b)//

當兩個操作數均為整數時,python會切掉小數部分並為您提供四捨五入值,以使用下位除法獲得準確的答案。例如,5/2 = 2.5,但是兩個操作數都是整數,因此python中此表達式的答案為2。要獲得2.5作為答案,請使用//進行下限除法。所以5 // 2 = 2.5

Q93。標識符的最大可能長度是多少?

a)31個字元 b)63個字元 c)79個字元 d)以上都不是

答案: d)以上都不是

標識符可以是任何長度。

Q94。為什麼不鼓勵使用下劃線開頭的局部變數名?

a)它們用於指示類的私有變數 b)它們使解釋器混亂 c)它們用於指示全局變數 d)它們減慢了執行速度

答: a)它們用於指示類的私有變數

由於Python沒有專用變數的概念,因此前導下劃線用於指示不得從類外部訪問的變數。

Q95。以下哪項是無效的陳述?

a)abc = 1,000,000 b)abc = 1000 2000 3000 c)a,b,c = 1000,2000,3000 d)a_b_c = 1,000,000

答案: b)abc = 1000 2000 3000

變數名稱中不允許使用空格。

Q96。以下內容的輸出是什麼?

try:
    if '1' != 1:
        raise "someError"
    else:
        print("someError has not occured")
except "someError":
    print ("someError has occured")

a)發生了一些錯誤 b)尚未發生了一些錯誤 c)無效的程式碼 d)以上都不是

答案: c)無效程式碼

一個新的異常類必須繼承自BaseException。這裡沒有這樣的繼承。

Q97。假設list1是[2,33,222,14,25],那麼list1 [-1]是什麼?

a)錯誤 b)無 c)25 d)2

答案: c)25

索引-1對應於列表中的最後一個索引。

Q98。要打開文件c:scores.txt進行寫入,我們使用

a)outfile =打開(「 c:scores.txt」,「 r」) b)outfile =打開(「 c:scores.txt」,「 w」) c)outfile =打開(file =「 c:scores.txt」 」,「 r」) d)outfile =打開(文件=「 c:scores.txt」,「 o」)

答案: b)該位置包含雙斜杠(),並且w用於指示正在寫入文件。

Q99。以下內容的輸出是什麼?

f = None
 
for i in range (5):
    with open("data.txt", "w") as f:
        if i > 2:
            break
 
print f.closed

a)是 b)錯誤 c)無 d)錯誤

答案: a)正確

與打開文件一起使用時,WITH語句可確保在with塊退出時關閉文件對象。

Q100。try-except-else的else部分何時執行?

a)總是 b)發生異常時 c)沒有異常發生時 d)except塊中發生異常時

答案: c)沒有異常發生時

else部分在沒有異常發生時執行。

我希望這套Python面試問題能幫助您準備面試。祝一切順利!

歡迎關注 Java架構師社區公眾號.
本文轉載自Java架構師必看 ,更多內容點擊查看!

Tags: