>백엔드 개발 >파이썬 튜토리얼 >골드 3, 실버 4, Python 면접 필수 질문 50개(추천 모음)

골드 3, 실버 4, Python 면접 필수 질문 50개(추천 모음)

Python当打之年
Python当打之年앞으로
2023-08-15 14:41:131215검색


Python은 지난 2020년 연례 TIOBE 프로그래밍 언어 상을 수상하고 지난 1년 동안 가장 인기 있는 프로그래밍 언어가 되었습니다. 데이터 과학, 기계 학습 등의 분야에서 널리 사용됩니다.


"Golden Three Silver Four" 채용 시즌이 다가오고 있습니다. Xiao F는 여러분을 위해 50가지 Python 인터뷰 질문과 해당 답변을 정리하여 여러분이 더 잘 이해하도록 돕습니다. 파이썬을 배워보세요.



▍1. 파이썬이란 무엇인가요? 왜 그렇게 인기가 있습니까?


Python은 해석된 고급 범용 프로그래밍 언어입니다.


Python의 디자인 컨셉은 필요한 공백과 빈 줄을 사용하여 코드의 가독성을 높이는 것입니다.


간단하고 사용하기 쉬운 구문으로 인해 인기가 높습니다.


▍2. Python 실행이 느린 이유는 무엇이며 어떻게 개선할 수 있나요?


파이썬 코드가 느리게 실행되는 이유는 해석된 언어이기 때문입니다. 코드는 모국어로 컴파일되지 않고 런타임에 해석됩니다.


Python 코드의 속도를 향상시키기 위해 CPython, Numba를 사용하거나 코드를 일부 수정할 수도 있습니다.


1. 메모리 사용량을 줄입니다.

2. 내장된 함수와 라이브러리를 사용하세요.

3. 계산을 루프 외부로 이동합니다.

4. 코드 기반을 작게 유지하세요.

5. 불필요한 순환을 피하세요



▍3. 파이썬의 특징은 무엇인가요?


1. 쉬운 코딩

2. 무료 및 오픈 소스 언어 ​​

3. 디버깅이 쉬움

5. OOPS 지원

6. 다수의 표준 라이브러리 및 타사 모듈

7. 확장성(C 또는 C++로 Python

코드 작성 가능)

8. 사용자 친화적인 데이터 구조



▍4. Python의 응용 프로그램은 무엇인가요?


1. 웹 개발

2. 인공 지능 및 기계 학습

4.

5. 애플리케이션 개발

6. 콘솔 기반 애플리케이션

7. 소프트웨어 테스팅

9. 오디오 또는 비디오 기반 애플리케이션

10.

▍5.

파이썬의 한계?

1. 속도

2. 모바일 개발

3. 메모리 소모(다른 언어에 비해 매우 높음)

4. 두 버전의 비호환성(2,3)

5. 오류는 런타임에만 표시됩니다)

6. Simplicity



▍6.


먼저 인터프리터는 Python 코드를 읽고 구문이나 형식 오류가 있는지 확인합니다.


오류가 발견되면 실행이 일시 중단됩니다. 오류가 발견되지 않으면 인터프리터는 Python 코드를 동등한 형식 또는 바이트 코드로 변환합니다.


바이트코드는 Python 가상 머신(PVM)으로 전송됩니다. 여기서 Python 코드가 실행되고, 오류가 발견되면 실행이 일시 중지되고, 그렇지 않으면 결과가 다음과 같이 표시됩니다. 출력 창.


골드 3, 실버 4, Python 면접 필수 질문 50개(추천 모음)



▍7. 어떻게 메모리를 관리하나요?


Python 메모리는 Python의 개인 헤드스페이스에 의해 관리됩니다.


모든 Python 개체와 데이터 구조는 개인 힙에 있습니다. 개인 힙 할당은 Python 메모리 관리자의 책임입니다.


Python에는 사용되지 않은 메모리를 회수하고 메모리를 해제하여 헤드스페이스로 사용할 수 있는 가비지 수집기도 내장되어 있습니다.



▍8. Python의 내장 데이터 구조를 설명하세요.

파이썬에는 네 가지 주요 데이터 구조 유형이 있습니다.


목록: 목록은 정수에서 문자열 또는 다른 목록에 이르는 이질적인 데이터 항목의 모음입니다. 목록은 변경 가능합니다. 목록은 다른 언어로 된 대부분의 컬렉션 데이터 구조 작업을 수행합니다. 목록은 [ ] 대괄호 안에 정의됩니다.

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


세트: 세트는 고유한 요소의 순서 없는 모음입니다. 합집합|, 교집합&, 차이 등의 집합 연산을 집합에 적용할 수 있습니다. 세트는 변경할 수 없습니다. ()는 집합을 나타내는 데 사용됩니다.

예: 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. Python에서 작은따옴표와 큰따옴표의 차이점은 무엇인가요?


파이썬에서는 작은따옴표(' ')나 큰따옴표 (" ")를 사용하는 데 차이가 없으며 둘 다 문자열을 나타내는 데 사용할 수 있습니다.


이 두 가지 일반 표현식은 프로그래머의 개발을 단순화하고 오류를 방지하는 것 외에도 이스케이프 문자의 사용을 줄이고 프로그램을 더욱 간결하고 명확하게 만드는 이점도 있습니다.



▍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 스크립트를 실행하자마자 자동으로 실행됩니다.



▍21. 람다 함수란 무엇인가요?


A Lambda 함수는 n개의 매개변수를 가질 수 있지만 표현식은 하나만 가질 수 있는 이름 없는 단일 행 함수입니다. 익명 함수라고도 합니다.


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. 피클링과 언피클이 뭔가요?


피클링은 Python 객체(또는 심지어 Python 코드)를 문자열로 변환하는 프로세스입니다.

Unpickling은 문자열을 원래 개체로 변환하는 역과정입니다.



▍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. 파이썬에서 OOPS란 무엇인가요?


객체 지향 프로그래밍, 추상화, 캡슐화, 상속, 다형성 ▍ 36. 추상화란 무엇인가요?



추상이란 대상의 본질이나 필요한 특성을 외부 세계에 보여주고 기타 관련 없는 정보를 모두 숨기는 과정입니다.



▍37.


캡슐화란 데이터와 멤버 함수를 하나의 단위로 함께 패키징하는 것을 의미합니다.


데이터 은닉 개념도 구현합니다.



▍38.


다형성은 "다양한 형태"를 의미합니다.


하위 클래스는 고유한 동작을 정의하면서도 상위/기본 클래스와 동일한 기능이나 동작을 공유할 수 있습니다.



▍39.파이썬에서 원숭이 패치란 무엇입니까?


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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 Python当打之年에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제