水曜日にPythonの開発を面接して、このいくつかのPythonの面接問題はもう少しで間違いに答えるところで、Pythonの面接問題No 7
18337 ワード
文書ディレクトリ第1題:次のコードを読み、A 0,A 1からAnの最終値を黙読する. 第2題:pythonの稼働効率を向上させるにはどうすればいいですか? 第3題:Python辞書はどんな特徴があって、辞書の中から値を取って、時間の複雑さはいくらですか? 第4題:マルチスレッド、マルチプロセス? 第5題:pythonリストのメンバーメソッドをできるだけ列挙し、以下のリスト操作の答えを与えてください: 第1題:次のコードを読んで、A 0,A 1からAnの最終値を黙読します.
コードクラスのテーマを暗読するのは、比較的簡単です.リスト解析に重点を置いて、後で簡単にこれらの質問に答えることができます.
第2題:pythonの稼働効率を向上させるにはどうすればいいですか?データ構造では、辞書を使用できるペアを選択する必要があります.辞書はインデックスの検索とソートの面でリストよりはるかに高いです. pythonでカプセル化されたモジュールライブラリのキーコードを多く使用外部機能パッケージ(Cython,pylnlne,pypy,pyrex) を使用ジェネレータ を使用ループの最適化は、ループ内で変数にアクセスする属性 をできるだけ避ける.より新しいPythonバージョン を使用
第3題:Python辞書はどんな特徴があって、辞書の中から値を取って、時間の複雑さはいくらですか?
dict(中国語では辞書)は、別の検索速度はdictが10要素でも10万要素でも検索速度は同じです.一方listの検索速度は要素が増加するにつれて徐々に低下する.しかしdictの検索速度が速いのは代価がないのではなく、dictの欠点はメモリを消費するのが大きく、多くの内容を浪費することであり、listは正反対で、メモリを消費するのは小さいが、検索速度は遅い. ディクショナリ値は、標準的なオブジェクトでもユーザ定義でもよいpythonオブジェクトを制限なく取得できますが、キーは使用できません.同じキーが2回表示されることは許可されていません.キーは可変でなければならないので、数字、文字列、メタグループで機能することができますので、リストではできません. dictの2つ目の特徴は、格納されたkey-valueシーケンスペアがシーケンスされていないことです!これはリストとは違います.
辞書の中から値を取って、時間の複雑さはいくら
第4題:マルチスレッド、マルチプロセス?スレッドスレッドは、オペレーティングシステムが演算スケジューリングを行うことができる最小単位である. プロセスプログラムの実行例はプロセスである.各プロセスは、プログラムを実行するために必要なすべてのリソースを提供します.(プロセスは本質的にリソースの集合である)1つのプロセスには、仮想アドレス空間、実行可能なコード、オペレーティングシステムのインタフェース、安全なコンテキスト(プロセスを開始するユーザーと権限などを記録する)、一意のプロセスID、環境変数、優先度クラス、最小および最大のワークスペース(メモリ領域)、および少なくとも1つのスレッドがあります.各プロセスが開始されると、
プロセスとスレッドの違い
インターネットから転載して、総括するのはとても良くて、有益です!このブログを深く理解すればいいです.https://www.cnblogs.com/whatisfantasy/p/6440585.html同じプロセスのスレッドは同じメモリ領域を共有しますが、プロセス間は独立しています. 同じプロセスのすべてのスレッドのデータは共有され(プロセス通信)、プロセス間のデータは独立している. プライマリ・スレッドの変更は、他のスレッドの動作に影響を与える可能性がありますが、親プロセスの変更(削除以外)は、他のサブプロセスに影響を与えません. スレッドはコンテキストの実行命令であり、プロセスは演算に関連するクラスタリソースである. 同じプロセスのスレッド間で直接通信できますが、プロセス間のコミュニケーションは中間エージェントによって実現される必要があります. 新しいスレッドを作成するのは簡単ですが、新しいプロセスを作成するには親プロセスをコピーする必要があります. スレッドは、同じプロセスの他のスレッドを操作できますが、プロセスはサブプロセスのみを操作できます. スレッドの起動速度は速く、プロセスの起動速度は遅い(ただし、両者の実行速度には比べものにならない).
5番:pythonリストのメンバーメソッドをできるだけ列挙し、以下のリスト操作の答えを出してください. a=[1, 2, 3, 4, 5], a[::2]=?, a[-2:] = ? 行のコードはリストaの中の偶数の位置の要素に対して3をプラスした後に和を求めることを実現しますか? リストaの要素順序を乱し、aを並べ替えてリストbを得、aとbを要素順序で辞書dを構築する.
A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
A1 = range(10)
A2 = [i for i in A1 if i in A0]
A3 = [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]
コードクラスのテーマを暗読するのは、比較的簡単です.リスト解析に重点を置いて、後で簡単にこれらの質問に答えることができます.
A0 = {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}
A1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
A2 = []
A3 = [1, 3, 2, 5, 4]
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]]
第2題:pythonの稼働効率を向上させるにはどうすればいいですか?
第3題:Python辞書はどんな特徴があって、辞書の中から値を取って、時間の複雑さはいくらですか?
dict(中国語では辞書)は、別の
であり、任意のタイプのオブジェクトを格納することができる.辞書の各キー値(key=>value)対はコロン(:)で分割され、各対の間はカンマ(,)で分割され、辞書全体がカッコ{}
に含まれる辞書の特性辞書の中から値を取って、時間の複雑さはいくら
O(1)
で、辞書はhash table
実現します第4題:マルチスレッド、マルチプロセス?
は、プロセスの実際の動作単位です.1つのスレッドとは、プロセス内の単一の順序の制御フローを指し、
であり、各スレッドは並列に異なるタスクを実行する.1つのスレッドはexecution context(実行コンテキスト)、すなわちcpuの実行に必要な一連の命令である.
というスレッドが最初に生成され、プライマリ・スレッドは他のサブスレッドを作成します.プロセスとスレッドの違い
インターネットから転載して、総括するのはとても良くて、有益です!このブログを深く理解すればいいです.https://www.cnblogs.com/whatisfantasy/p/6440585.html
5番:pythonリストのメンバーメソッドをできるだけ列挙し、以下のリスト操作の答えを出してください.
a[::2] = [1, 3, 5], a[-2:] = [4, 5]
from functools import reduce
a = [1, 2, 3, 4, 5]
print(reduce(lambda x, y: x+y, [(x+3*((a.index(x)+1)%2)) for x in a])) # a
#
print(reduce(lambda x, y: x+y, [a[x]+(x+1)%2*3 for x in range(0, 5)])) # a 5
from random import shuffle
a = [1, 2, 3, 4, 5]
# a
shuffle(a)
# a b
b = sorted(a, reverse=True)
# zip , “ ” , , , 。
d = dict(zip(a, b))
print(d)