ホームページ  >  記事  >  バックエンド開発  >  ゴールド 3、シルバー 4、Python 面接の必須質問 50 (推奨コレクション)

ゴールド 3、シルバー 4、Python 面接の必須質問 50 (推奨コレクション)

Python当打之年
Python当打之年転載
2023-08-15 14:41:131182ブラウズ


過去 2020 年に、Python は TIOBE プログラミング言語オブ ザ イヤー賞を受賞し、 になりました。過去 今年最も人気のあるプログラミング言語。 データサイエンスや機械学習などの分野で広く使用されています。


「金・三・銀・四」の採用シーズンです。小さな F が与えるもの Python の理解と学習をさらに進めるために、Python の面接での 50 の質問と に対する対応する回答をまとめました。



##▍1. Python とは何ですか?なぜそんなに人気があるのでしょうか?

Python は、解釈された高レベルの汎用プログラミング言語です。


Python の設計哲学は、必要なスペースと空白行を使用してコードの可読性を高めることです。


シンプルで使いやすい構文のため、人気があります。


#▍2. Python の実行が必要な理由遅い、どうすれば改善できるでしょうか?


Python コードの実行が遅い理由は、Python コードがインタープリタ型言語であるためです。 そのコードは、ネイティブ言語にコンパイルされるのではなく、実行時に解釈されます。


Python コードの速度を向上させるために、CPython、Numba を使用するか、いくつかのコードを作成することもできます。コードの変更。


#1. メモリ使用量を削減します。

2. 組み込み関数とライブラリを使用します。

3. 計算をループの外に移動します。

4. コードベースは小さくしてください。

#5. 不要なループを避ける

#


▍3. Python の特徴は何ですか?


1. コーディングが簡単

2 . 無料のオープンソース言語

3. 高級言語

4. デバッグが簡単

##5 . OOPS サポート

6. 多数の標準ライブラリとサードパーティ モジュール

7. 拡張性 ( C または C# を使用できます ##Python を記述しますcode)

8. ユーザーフレンドリーなデータ構造



# #▍4.Python のアプリケーションは何ですか?


#1. ウェブ開発

2 . デスクトップ GUI 開発

3. 人工知能と機械学習

4. ソフトウェア開発

# #5. ビジネス アプリケーション開発

6. コンソールベースのアプリケーション

7. ソフトウェア テスト

8. Web オートメーション

##9. オーディオまたはビデオ ベースのアプリケーション

#10. 画像処理アプリケーション



#▍5.

Python の制限は何ですか?

1. 速度

2. モバイル開発

3. メモリ消費量 (他の言語と比較して非常に高い)

4. 2 つの互換性がないversion (2, 3)

5. 実行エラー (さらなるテストが必要で、エラーは実行時にのみ表示されます)

6. シンプルさ



##▍6、 Python コードはどのように実行されますか?


まず、インタープリターは Python コードを読み取り、構文エラーや書式エラーがないかチェックします。


#エラーが見つかった場合、実行は一時停止されます。エラーが見つからなかった場合、インタープリターは Python コードを同等の形式、つまりバイト コードに変換します。


バイトコードは Python 仮想マシン (PVM) に送信され、そこで Python コードが見つかると実行されます。エラーが発生した場合は実行が一時停止され、それ以外の場合は結果が出力ウィンドウに表示されます。


ゴールド 3、シルバー 4、Python 面接の必須質問 50 (推奨コレクション)



##▍7.

Python でメモリを管理するにはどうすればよいですか?


#Python メモリは、Python のプライベート ヘッドスペースによって管理されます。


#すべての Python オブジェクトとデータ構造はプライベート ヒープに配置されます。プライベート ヒープの割り当ては、Python メモリ マネージャーの責任です。


#Python には、未使用のメモリをリサイクルし、メモリを解放して利用できるようにするガベージ コレクタも組み込まれています。ヘッドスペースで。



8. Python の組み込みデータ構造について説明しますか?

Python には主に 4 つのタイプのデータ構造があります。


リスト: リストは、整数から文字列、または別のリストに至るまでの異種データ項目のコレクションです。 リストは変更可能です。リストは、他の言語のほとんどのコレクション データ構造の役割を果たします。リストは [ ] 角括弧内で定義されます。

例: a = [1,2,3,4]


##Set: セットは、順序付けされていない一意の要素のコレクションです。 Union|、Intersection&、Differential などの集合演算を集合に適用できます。セットは不変です。 () は集合を表すために使用されます。

例: a = {1,2,3,4}


##タプル: Python タプルは、不変であることを除けば、Python リストとまったく同じように機能します。 () はタプルを定義するために使用されます。

例: a = (1,2,3,4)


辞書: 辞書はキーのコレクションです。 -値のペア。これは他の言語のハッシュ マップに似ています。辞書では、キーは一意で不変のオブジェクトです。

例: a = {'number':[1,2,3,4]}



▍9. //、%、* * 演算子の説明?


//(フロア除算) - これは除算演算子であり、除算を返します。の整数部分。

例: 5 // 2 = 2


##% (モジュロ) - 次の結果を返します。割り算の余り。

#例: 5 % 2 = 1


##**(電力) - 演算子に対して指数計算を実行します。 a ** b は a の b 乗を表します。

例: 5 ** 2 = 25、5 ** 3 = 125


#

▍10. P の一重引用符と二重引用符の違いは何ですか?


一重引用符 (' ') または二重引用符を使用します ( " ") に違いはなく、どちらも文字列を表すために使用できます。


プログラマの開発を簡素化し、エラーを回避することに加えて、これら 2 つの一般的な式には次のような利点もあります。エスケープ文字の使用を減らし、プログラムをよりシンプルかつ明確に見せることができます。


#

▍11. Python の追加、挿入、拡張の違いは何ですか?


append: リストの最後に新しい要素を追加します。

insert: リスト内の特定の位置に要素を追加します。

extend: 新しいリストを追加してリストを拡張します。


numbers = [1,2,3,4,5]
numbers.append(6)
print(numbers)
>[1,2,3,4,5,6]

## insert(position,value)
numbers.insert(2,7)  
print(numbers)
>[1,2,7,4,5,6]

numbers.extend([7,8,9])
print(numbers)
>[1,2,7,4,5,6,7,8,9]

numbers.append([4,5])
>[1,2,7,4,5,6,7,8,9,[4,5]]


#

▍12. ブレーク、コンティニュー、パスとは何ですか?


#break: 条件が満たされたときにプログラムがループを終了します。

Continue: ループの先頭に戻ります。これにより、プログラムは現在のループ反復内の残りのステートメントをすべてスキップします。

pass: プログラムは残りのステートメントをすべて実行せずに渡します。


#

▍13、区分Python中的remove,del和pop?


remove:将删除列表中的第一个匹配值,它以值作为参数。

del:使用索引删除元素,它不返回任何值。

pop:将删除列表中顶部的元素,并返回列表的顶部元素。


numbers = [1,2,3,4,5]
numbers.remove(5)
> [1,2,3,4]

del numbers[0]
>[2,3,4]

numbers.pop()
>4



▍14、什么是switch语句。如何在Python中创建switch语句?


switch语句是实现多分支选择功能,根据列表值测试变量。

switch语句中的每个值都被称为一个case。

在Python中,没有内置switch函数,但是我们可以创建一个自定义的switch语句。

switcher = {
   1: "January",
   2: "February",
   3: "March",
   4: "April",
   5: "May",
   6: "June",
   7: "July",
   8: "August",
   9: "September",
   10: "October",
   11: "November",
   12: "December"
}
month = int(input())
print(switcher.get(month))

> 3
march


▍15、举例说明Python中的range函数?


range:range函数返回从起点到终点的一系列序列。

range(start, end, step),第三个参数是用于定义范围内的步数。


# number
for i in range(5):
    print(i)
> 0,1,2,3,4

# (start, end)
for i in range(1, 5):
    print(i)
> 1,2,3,4

# (start, end, step)
for i in range(0, 5, 2):
    print(i)
>0,2,4



▍16、==和is的区别是?


==比较两个对象或值的相等性

is运算符用于检查两个对象是否属于同一内存对象。


lst1 = [1,2,3]
lst2 = [1,2,3]

lst1 == lst2
>True

lst1 is lst2
>False


▍17、如何更改列表的数据类型?


要将列表的数据类型进行更改,可以使用tuple()或者set()。


lst = [1,2,3,4,2]

# 更改为集合
set(lst)    ## {1,2,3,4}
# 更改为元组
tuple(lst)  ## (1,2,3,4,2)



▍18、Python中注释代码的方法有哪些?


在Python中,我们可以通过下面两种方式进行注释。


1. 三引号''',用于多行注释。

2. 单井号#,用于单行注释。



▍19、!=和is not运算符的区别?


!=如果两个变量或对象的值不相等,则返回true。

is not是用来检查两个对象是否属于同一内存对象。


lst1 = [1,2,3,4]
lst2 = [1,2,3,4]

lst1 != lst2
>False

lst1 is not lst2
>True



▍20. Python には main 関数がありますか? #################################はい、そうです。 Python スクリプトを実行するとすぐに、自動的に実行されます。


##▍21、

#何ラムダ関数ですか?



#Lambda 関数は名前のない単一行の関数であり、n 個のパラメーターを持つことができます。ただし、式は 1 つだけです。匿名関数とも呼ばれます。


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

> 11



▍22、iterables和iterators之间的区别?


iterable:可迭代是一个对象,可以对其进行迭代。在可迭代的情况下,整个数据一次存储在内存中。


iterators:迭代器是用来在对象上迭代的对象。它只在被调用时被初始化或存储在内存中。迭代器使用next从对象中取出元素。


# List is an iterable
lst = [1,2,3,4,5]
for i in lst:
    print(i)

# iterator
lst1 = iter(lst)
next(lst1)
>1
next(lst1)
>2
for i in lst1:
    print(i)
>3,4,5



▍23、Python中的Map Function是什么?


map函数在对可迭代对象的每一项应用特定函数后,会返回map对象。



▍24、解释Python中的Filter


过滤器函数,根据某些条件从可迭代对象中筛选值。


# iterable
lst = [1,2,3,4,5,6,7,8,9,10]

def even(num):
    if num%2==0:
        return num

# filter all even numbers
list(filter(even,lst))
---------------------------------------------
[2, 4, 6, 8, 10]



▍25、解释Python中reduce函数的用法?


reduce()函数接受一个函数和一个序列,并在计算后返回数值。


from functools import reduce

a = lambda x,y:x+y
print(reduce(a,[1,2,3,4]))

> 10



▍26. ピクルスとアンピクルスとは何ですか?


pickle は、Python オブジェクト (または Python コード) を文字列に変換するプロセスです。

Unpickle は、文字列を元のオブジェクトに変換する逆のプロセスです。



▍27、*args と **kwargs について説明してください。


#*args は、関数に渡される引数の数が不明な場合に使用されます。


def add(* num):
    sum = 0 
    for val in num:
        sum = val + sum 
    print(sum)


add(4,5)
add(7,4,6)
add(10,34,23)
--------------------- 
9 
17 
57


**kwargs,是当我们想将字典作为参数传递给函数时使用的。


def intro(**data):
    print("\nData type of argument:",type(data))
    for key, value in data.items():
        print("{} is {}".format(key,value))


intro(name="alex",Age=22, Phone=1234567890)
intro(name="louis",Email="a@gmail.com",Country="Wakanda", Age=25)
--------------------------------------------------------------
Data type of argument: <class &#39;dict&#39;>
name is alex
Age is 22
Phone is 1234567890

Data type of argument: <class &#39;dict&#39;>
name is louis
Email is a@gmail.com
Country is Wakanda
Age is 25



▍28、解释re模块的split()、sub()、subn()方法


split():只要模式匹配,此方法就会拆分字符串。

sub():此方法用于将字符串中的某些模式替换为其他字符串或序列。

subn():和sub()很相似,不同之处在于它返回一个元组,将总替换计数和新字符串作为输出。


import re
string = "There are two ball in the basket 101"


re.split("\W+",string)
---------------------------------------
[&#39;There&#39;, &#39;are&#39;, &#39;two&#39;, &#39;ball&#39;, &#39;in&#39;, &#39;the&#39;, &#39;basket&#39;, &#39;101&#39;]

re.sub("[^A-Za-z]"," ",string)
----------------------------------------
&#39;There are two ball in the basket&#39;

re.subn("[^A-Za-z]"," ",string)
-----------------------------------------
(&#39;There are two ball in the basket&#39;, 10)



▍29、Python中的生成器是什么


生成器(generator)的定义与普通函数类似,生成器使用yield关键字生成值。


如果一个函数包含yield关键字,那么该函数将自动成为一个生成器。


# A program to demonstrate the use of generator object with next() A generator function 
def Fun(): 
   yield 1
   yield 2
   yield 3

# x is a generator object 
x = Fun()
print(next(x))
-----------------------------
1
print(next(x))
-----------------------------
2



▍30、如何使用索引来反转Python中的字符串?


string = &#39;hello&#39;

string[::-1]
>&#39;olleh&#39;



▍31、类和对象有什么区别?


类(Class)被视为对象的蓝图。类中的第一行字符串称为doc字符串,包含该类的简短描述。


在Python中,使用class关键字可以创建了一个类。一个类包含变量和成员组合,称为类成员。


对象(Object)是真实存在的实体。在Python中为类创建一个对象,我们可以使用obj = CLASS_NAME()

例如:obj = num()


使用类的对象,我们可以访问类的所有成员,并对其进行操作。


class Person:
    """ This is a Person Class"""
    # varable
    age = 10
    def greets(self):
        print(&#39;Hello&#39;)


# object
obj = Person()
print(obj.greet)
----------------------------------------
Hello



▍32、你对Python类中的self有什么了解?


#self はクラスのインスタンスを表します。


# self キーワードを使用すると、Python のクラスのプロパティとメソッドにアクセスできます。


#クラス文法には変数を宣言するための明示的な方法がないため、クラス関数では self を使用する必要があることに注意してください。



▍33. Python での _init_ の用途は何ですか?

# 「__init__」は、Python クラスの予約メソッドです。


#これはコンストラクターと呼ばれ、コードが実行されるたびに自動的に呼び出され、主にクラスのすべての変数を初期化するために使用されます。



#▍34. Python の継承について説明しますか?


#継承により、あるクラスが別のクラスのすべてのメンバーとプロパティを取得できるようになります。

継承継承によりコードの再利用が可能になり、アプリケーションの作成と保守が容易になります。


#継承されるクラスをスーパークラス、継承されるクラスを派生クラスと呼びます。サブクラス。


▍35. Python の OOPS とは何ですか?


##オブジェクト指向プログラミング、抽象化、

カプセル化、 継承、ポリモーフィズム



##▍ 36. 抽象化とは何ですか?


抽象化とは、オブジェクトの本質や必要な特性をオブジェクトに移すことです。それを外部に表示し、その他の無関係な情報をすべて隠すプロセス。



##▍37. カプセル化とは何ですか?


# カプセル化とは、データとメンバー関数を 1 つのユニットにパッケージ化することを意味します。


# データ隠蔽の概念も実装されています。



▍38. ポリモーフィズムとは何ですか?


#ポリモーフィズムとは「多くの形式」を意味します。


# サブクラスは、独自の固有の動作を定義しながら、親/基本クラスと同じ機能や動作を共有できます。



▍39. Python のモンキー パッチとは何ですか?

#Monkey パッチ適用とは、実行時にクラスまたはモジュールを動的に変更することを指します。

from SomeOtherProduct.SomeModule import SomeClass

def speak(self):
    return "Hello!"

SomeClass.speak = speak



▍40、Python支持多重继承吗?


Python可以支持多重继承。多重继承意味着,一个类可以从多个父类派生。



▍41、Python中使用的zip函数是什么?


zip函数获取可迭代对象,将它们聚合到一个元组中,然后返回结果。


zip()函数的语法是zip(*iterables)


numbers = [1, 2, 3]
string = [&#39;one&#39;, &#39;two&#39;, &#39;three&#39;] 
result = zip(numbers,string)

print(set(result))
-------------------------------------
{(3, &#39;three&#39;), (2, &#39;two&#39;), (1, &#39;one&#39;)}



▍42、解释Python中map()函数?


map()函数将给定函数应用于可迭代对象(列表、元组等),然后返回结果(map对象)。


我们还可以在map()函数中,同时传递多个可迭代对象。 


numbers = (1, 2, 3, 4)
result = map(lambda x: x + x, numbers)

print(list(result))



▍43、Python中的装饰器是什么?


装饰器(Decorator)是Python中一个有趣的功能。


它用于向现有代码添加功能。这也称为元编程,因为程序的一部分在编译时会尝试修改程序的另一部分。


def addition(func):
    def inner(a,b):
        print("numbers are",a,"and",b)
        return func(a,b)
    return inner

@addition
def add(a,b):
   print(a+b)

add(5,6)
---------------------------------
numbers are 5 and 6
sum: 11



▍44、编写程序,查找文本文件中最长的单词


def longest_word(filename):
    with open(filename, &#39;r&#39;) as infile:
              words = infile.read().split()
    max_len = len(max(words, key=len))
    return [word for word in words if len(word) == max_len]

print(longest_word(&#39;test.txt&#39;))
----------------------------------------------------
[&#39;comprehensions&#39;]



▍45、编写程序,检查序列是否为回文


a = input("Enter The sequence")
ispalindrome = a == a[::-1]

ispalindrome
>True



▍46、编写程序,打印斐波那契数列的前十项


fibo = [0,1]
[fibo.append(fibo[-2]+fibo[-1]) for i in range(8)]

fibo
> [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]



▍47、编写程序,计算文件中单词的出现频率


from collections import Counter

def word_count(fname):
        with open(fname) as f:
                return Counter(f.read().split())

print(word_count("test.txt"))



▍48、编写程序,输出给定序列中的所有质数


lower = int(input("Enter the lower range:"))
upper = int(input("Enter the upper range:"))
list(filter(lambda x:all(x % y != 0 for y in range(2, x)), range(lower, upper)))

-------------------------------------------------
Enter the lower range:10
Enter the upper range:50
[11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]


▍49、编写程序,检查数字是否为Armstrong


ゴールド 3、シルバー 4、Python 面接の必須質問 50 (推奨コレクション)


将每个数字依次分离,并累加其立方(位数)。


最后,如果发现总和等于原始数,则称为阿姆斯特朗数(Armstrong)。


num = int(input("Enter the number:\n"))
order = len(str(num))

sum = 0
temp = num

while temp > 0:
   digit = temp % 10
   sum += digit ** order
   temp //= 10

if num == sum:
   print(num,"is an Armstrong number")
else:
   print(num,"is not an Armstrong number")



▍50、用一行Python代码,从给定列表中取出所有的偶数和奇数


a = [1,2,3,4,5,6,7,8,9,10]
odd, even = [el for el in a if el % 2==1], [el for el in a if el % 2==0]

print(odd,even)
> ([1, 3, 5, 7, 9], [2, 4, 6, 8, 10])


以上がゴールド 3、シルバー 4、Python 面接の必須質問 50 (推奨コレクション)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はPython当打之年で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。