(面接問題)python面接問題集錦-付解答
8175 ワード
1、1行のコードは1-100の和を実現する
2、1つの関数内でグローバル変数の値を修正する方法
3、辞書はどのようにキーを削除して2つの辞書を合併します
4、pythonのGILに対する理解を話す
GILはpythonのグローバルインタプリタロックであり、1つのプロセスで複数のスレッドが実行され、そのうちの1つのスレッドが実行されるとpythonインタプリタ(ロック付きGIL)を占領し、他のスレッドは実行できなくなり、そのスレッドのロック解除を待つ必要があり、スレッドが時間のかかる操作(IO操作)に遭遇すると、インタプリタロックは自動的に解除され、他のスレッドは実行を続行します.したがってpythonのマルチスレッドは同時に実行されるのではなく,前後順である.
マルチプロセスは、各プロセスにpython解釈器が1つあることに相当するので、マルチプロセスは複数のタスクを同時に実行することができ、欠点はプロセスのリソースオーバーヘッドが大きいことです.
5、リスト内の要素の重量除去を実現する
6、python 2とpython 3のrange関数の違い
python 2ではrangeがリストを返し、python 3ではrangeが反復器を返し、リスト反復器よりもメモリを節約します.
7、どんな言葉がデコレーションできるか一言で説明する
関数はパラメータ伝達言語として使用でき、装飾器を使用できます.
8、オブジェクト向けの簡単な説明new__および_init__方法の違い
__init__メソッドは、インスタンス化時にパラメータ呼び出しを初期化します.このメソッドには、パラメータselfというパラメータがあり、インスタンスオブジェクト自体を指します.このメソッドには、パラメータを初期化するための戻り値はありません.
__new__方法は__init__メソッドは以前に呼び出され、パラメータclsがあり、現在のクラスを指し、戻り値があり、インスタンス化されたインスタンスを返します.
clsのID:63580721832これはnewメソッド<_main__.a object=""at=">これはinitメソッド<"main__.a object=""at=">クラスAのid:63580721832
9、リスト[1,2,3,4,5]map関数を用いて[1,4,9,16,25]を出力し、リスト導出式を用いて10より大きい数を抽出する
10、pythonでランダム整数、ランダム小数、0-1間の小数を生成する方法
ランダム整数:random.randint(a,b)は、区間内の整数をランダムに生成する
ランダム小数:numpyライブラリ、npを使用します.random.randn(n)、n個のランダム小数を生成する
0-1ランダム小数:random.random()は、括弧ではパラメータを伝達しません
11、中国、ラベルの中の内容(「中国」)を正則でマッチングし、classの類名は不確定である
12、pythonでの断言方法の例
assertメソッド,断言に成功するとプログラムは実行を継続し,断言に失敗するとエラーを報告する
転載先:https://www.cnblogs.com/Sweltering/p/9947533.html
sum_1_100 = sum(range(1, 101))
print(sum_1_100) # 5050
2、1つの関数内でグローバル変数の値を修正する方法
a = 100
def foo():
global a
a = 300
foo()
print(a) # 300
3、辞書はどのようにキーを削除して2つの辞書を合併します
d1 = {"name": "wj", "age": 22}
d2 = {"male": "famle"}
#
del d1["name"]
print(d1) # {'age': 22}
#
d1.update(d2)
print(d1) # {'age': 22, 'male': 'famle'}
4、pythonのGILに対する理解を話す
GILはpythonのグローバルインタプリタロックであり、1つのプロセスで複数のスレッドが実行され、そのうちの1つのスレッドが実行されるとpythonインタプリタ(ロック付きGIL)を占領し、他のスレッドは実行できなくなり、そのスレッドのロック解除を待つ必要があり、スレッドが時間のかかる操作(IO操作)に遭遇すると、インタプリタロックは自動的に解除され、他のスレッドは実行を続行します.したがってpythonのマルチスレッドは同時に実行されるのではなく,前後順である.
マルチプロセスは、各プロセスにpython解釈器が1つあることに相当するので、マルチプロセスは複数のタスクを同時に実行することができ、欠点はプロセスのリソースオーバーヘッドが大きいことです.
5、リスト内の要素の重量除去を実現する
lst = [11, 12, 11, 13, 14, 13]
# set,set
a = set(lst)
print(a) # {11, 12, 13, 14}
# list
lst = [x for x in a]
print(lst) # [11, 12, 13, 14]
6、python 2とpython 3のrange関数の違い
python 2ではrangeがリストを返し、python 3ではrangeが反復器を返し、リスト反復器よりもメモリを節約します.
7、どんな言葉がデコレーションできるか一言で説明する
関数はパラメータ伝達言語として使用でき、装飾器を使用できます.
8、オブジェクト向けの簡単な説明new__および_init__方法の違い
__init__メソッドは、インスタンス化時にパラメータ呼び出しを初期化します.このメソッドには、パラメータselfというパラメータがあり、インスタンスオブジェクト自体を指します.このメソッドには、パラメータを初期化するための戻り値はありません.
__new__方法は__init__メソッドは以前に呼び出され、パラメータclsがあり、現在のクラスを指し、戻り値があり、インスタンス化されたインスタンスを返します.
class A:
def __init__(self):
print(" init ", self)
def __new__(cls, *args, **kwargs):
print("cls ID:{}".format(id(cls)))
print(" new ", object.__new__(cls))
return object.__new__(cls)
A()
print(" A id:{}".format(id(A)))
:
clsのID:63580721832これはnewメソッド<_main__.a object=""at=">これはinitメソッド<"main__.a object=""at=">クラスAのid:63580721832
9、リスト[1,2,3,4,5]map関数を用いて[1,4,9,16,25]を出力し、リスト導出式を用いて10より大きい数を抽出する
a = [1, 2, 3, 4, 5]
b = map(lambda x:x**2, a)
c = [x for x in b if x>10]
print(c) # [16, 25]
10、pythonでランダム整数、ランダム小数、0-1間の小数を生成する方法
ランダム整数:random.randint(a,b)は、区間内の整数をランダムに生成する
ランダム小数:numpyライブラリ、npを使用します.random.randn(n)、n個のランダム小数を生成する
0-1ランダム小数:random.random()は、括弧ではパラメータを伝達しません
import random
import numpy
print(random.randint(1, 10)) # 1-10
print(numpy.random.randn(5)) # 5
print(random.random()) # 0-1
11、中国、ラベルの中の内容(「中国」)を正則でマッチングし、classの類名は不確定である
import re
str = ' '
ret = re.findall(r'(.*?)', str)
print(ret) # [' ']
12、pythonでの断言方法の例
assertメソッド,断言に成功するとプログラムは実行を継続し,断言に失敗するとエラーを報告する
a = 3
assert (a>1)
print(" , ")
assert (a<1) # # AssertionError
print(" , ")
転載先:https://www.cnblogs.com/Sweltering/p/9947533.html