Acumulación de preguntas de la entrevista de Python

Acumulación de preguntas de la entrevista de Python

P1. ¿Cuál es la diferencia entre una lista y una tupla en Python?

  • La lista es dinámica, la longitud no es fija, puede agregar, eliminar y modificar elementos a voluntad
  • La tupla es estática y la longitud se determina cuando se inicializa y no se puede cambiar, y también es imposible agregar, eliminar o modificar elementos.

Si es poco probable que los datos cambien, use tuplas para almacenarlos. Si los datos requieren una modificación y aumento frecuentes de datos, use una lista.

P2. ¿Cuáles son las funciones principales de Python?

  • Python es un lenguaje interpretado. A diferencia de lenguajes como C, Python no necesita compilarse antes de ejecutarse.

  • Python es un lenguaje dinámico. Cuando declaras variables o variables similares, no necesitas declarar el tipo de variable.

  • Python es adecuado para la programación orientada a objetos porque permite la definición, composición y herencia de clases. Python no tiene instrucciones de acceso (como públicas y privadas en C ++).

  • En Python, las funciones son la primera clase de objetos. Se pueden asignar a variables. La clase también es un objeto de primera clase

  • Escribir código Python es rápido, pero se ejecuta lentamente. Python permite extensiones basadas en C, como la biblioteca numpy.

  • Python se puede utilizar en muchos campos. Desarrollo de aplicaciones web, automatización, modelado matemático, aplicaciones de big data, etc. También se utiliza a menudo como código de "pegamento".

P3. ¿Python es un lenguaje de programación de propósito general?

Python puede escribir scripts, pero en un sentido general, se considera un lenguaje de programación de propósito general.

P4. ¿Cómo interpreta Python el lenguaje?

Python no necesita interpretar el programa antes de ejecutarlo. Por tanto, Python es un lenguaje interpretado.

Q5. ¿Qué es pep?

PEP son las siglas de Python Enhancement Proposal. Es un conjunto de reglas que especifican cómo formatear el código Python para una máxima legibilidad.

P6. ¿Cómo administrar la memoria en Python?

La gestión de la memoria en Python la gestiona el espacio dinámico privado de Python. Todos los objetos y estructuras de datos de Python se encuentran en el montón privado. El programador no tiene acceso a este montón privado. El intérprete de Python es responsable de manejar este problema.

La asignación de espacio de pila de los objetos de Python la realiza el administrador de memoria de Python. La API central proporciona algunas herramientas para que los programadores escriban código.

Python también tiene un recolector de basura incorporado, que puede recuperar toda la memoria no utilizada y ponerla a disposición para el espacio del montón.

La gestión de la memoria en Python se lleva a cabo desde tres aspectos, uno es el mecanismo de recuento de referencias de objetos bai, el segundo es el mecanismo de recolección de basura y el tercero es el mecanismo de reserva de memoria.

1. Mecanismo de recuento de referencias de objetos

Python utiliza el recuento de referencias internamente para realizar un seguimiento de los objetos en la memoria. Todos los objetos tienen recuentos de referencias.
La situación en la que aumenta el recuento de referencias:
1. Asignar un nuevo nombre a un objeto
2. Ponerlo en un contenedor (como una lista, tupla o diccionario)
La situación en la que el recuento de referencias disminuye:
1. Utilice la instrucción del para destruir el alias del objeto muestra
2., La referencia está fuera del alcance o se reasigna a la función
sys.getrefcount () para obtener el recuento de referencias actual del objeto. En la
mayoría de los casos, el recuento de referencias es mucho mayor de lo que imaginaba. Para datos inmutables (como números y cadenas), el intérprete compartirá memoria en diferentes partes del programa para ahorrar memoria.

Dos, recolección de basura

1. Cuando el recuento de referencias de un objeto vuelve a cero, el mecanismo de recolección de basura lo eliminará.
2. Cuando dos objetos ayb se refieren entre sí, la instrucción del puede reducir el recuento de referencias de ayb, y destruir el nombre usado para referirse al objeto subyacente. Sin embargo, dado que cada objeto contiene una aplicación para otros objetos, el recuento de referencias no se restablecerá a cero y el objeto no se destruirá. (Causando así una pérdida de memoria). Para resolver este problema, el intérprete ejecuta periódicamente un detector de bucles para buscar bucles de objetos inaccesibles y eliminarlos.

En tercer lugar, el mecanismo de la reserva de memoria

Python proporciona un mecanismo de recolección de basura para la memoria, pero almacena la memoria no utilizada en el grupo de memoria en lugar de devolverla al sistema operativo.
1. Mecanismo Pymalloc. Para acelerar la eficiencia de ejecución de Python, Python introdujo un mecanismo de grupo de memoria para administrar la aplicación y liberar pequeños bloques de memoria.
2. Todos los objetos menores de 256 bytes en Python usan el asignador implementado por pymalloc, mientras que los objetos grandes usan el sistema malloc.
3. Para los objetos de Python, como enteros, números de punto flotante y List, hay grupos de memoria privados independientes y sus grupos de memoria no se comparten entre objetos. En otras palabras, si asigna y libera una gran cantidad de enteros, la memoria utilizada para almacenar en caché estos enteros ya no podrá asignarse a números de punto flotante.

P7. ¿Qué es el espacio de nombres en Python?

El espacio de nombres es un sistema de nombres que se utiliza para garantizar que los nombres sean únicos para evitar conflictos de nombres.

En Python, todos los nombres existen en un espacio, donde existen y se manipulan, este es el espacio de nombres. Es como una caja y cada nombre de variable contiene un objeto. Al consultar variables, el objeto correspondiente se encontrará en el cuadro.

[Definición]
El mapeo de nombre a objeto. El espacio de nombres es la realización de un diccionario, la clave es el nombre de la variable y el valor es el valor correspondiente a la variable. No importa si cada espacio de nombres es independiente, un espacio de nombres no puede tener el mismo nombre, pero diferentes espacios de nombres pueden tener el mismo nombre sin ningún impacto.

[Clasificación]
Durante la ejecución del programa Python, habrá 2 o 3 espacios de nombres activos (3 cuando se llama a la función y 2 después de que se llama a la función). Según la ubicación de la definición de la variable, se puede dividir en las siguientes tres categorías:

  • Local, el espacio de nombres local, el espacio de nombres propiedad de cada función, registra todas las variables definidas en la función, incluidos los parámetros de entrada de la función y las variables locales definidas internamente.

  • Global, el espacio de nombres global, creado cuando se carga y ejecuta cada módulo, registra las variables definidas en el módulo, incluidas las funciones y clases definidas en el módulo, otros módulos importados, variables de nivel de módulo y constantes.

  • El espacio de nombres integrado de python, al que se puede acceder desde cualquier módulo, y contiene funciones integradas y excepciones.

【ciclo vital】

  • Local (espacio de nombres local) se crea cuando se llama a la función, pero se elimina cuando la función devuelve un resultado o lanza una excepción. (Cada función recursiva tiene su propio espacio de nombres).

  • Global (espacio de nombres global) se crea cuando se carga el módulo y generalmente se mantiene hasta que sale el intérprete de Python.

  • El espacio de nombres integrado (built-in) se crea cuando el intérprete de Python se inicia y permanece hasta que el intérprete sale.

El orden de creación de cada espacio de nombres: inicio del intérprete de Python -> crear espacio de nombres incorporado -> módulo de carga -> crear espacio de nombres global -> se llama a la función -> crear espacio de nombres local

El orden de destrucción de cada espacio de nombres: fin de la llamada de función -> destruir el espacio de nombres local correspondiente a la función -> salida de la máquina virtual de Python (intérprete) -> destruir el espacio de nombres global -> destruir el espacio de nombres incorporado

La fase de carga del intérprete de Python creará un espacio de nombres integrado y un espacio de nombres global para el módulo. El espacio de nombres local se crea dinámicamente cuando se llama a la función en la fase de tiempo de ejecución y se destruye dinámicamente cuando se llama a la función.

P8. ¿Qué es PYTHONPATH?

Es la variable de entorno utilizada al importar el módulo. Siempre que se importa un módulo, también se busca en PYTHONPATH para comprobar si el módulo importado existe en cada directorio. El intérprete lo usa para determinar qué módulo cargar.

P9. ¿Qué es un módulo de Python? ¿Cuáles son los módulos integrados de uso común en Python?

Los módulos de Python son archivos .py que contienen código Python. Este código puede ser una clase de función o una variable. Algunos módulos integrados de uso común incluyen: sys, math, random, data time y JSON.

P10. ¿Qué son las variables locales y las variables globales en Python?

Variables globales: las variables declaradas fuera de la función o en el espacio global se denominan variables globales. Se puede acceder a estas variables mediante cualquier función del programa.

Variable local: cualquier variable declarada en una función se denomina variable local. Esta variable existe en el espacio local, no en el espacio global.

P11. ¿Python distingue entre mayúsculas y minúsculas?

Si. Python es un lenguaje que distingue entre mayúsculas y minúsculas.

P11. ¿Python distingue entre mayúsculas y minúsculas?

Si. Python es un lenguaje que distingue entre mayúsculas y minúsculas.

P12. ¿Qué es la conversión de tipos en Python?

La conversión de tipo se refiere a la conversión de un tipo de datos a otro tipo de datos.

int (): convierte cualquier tipo de datos en un tipo entero

float (): convierte cualquier tipo de datos en tipo flotante

ord () - convierte caracteres a enteros

hex () - Convertir entero a hexadecimal

oct () - Convierte un entero en octal

tuple (): esta función se utiliza para convertir a tuplas.

set (): esta función devuelve el tipo después de la conversión para establecer.

list (): esta función se utiliza para convertir cualquier tipo de datos en un tipo de lista.

dict (): esta función se utiliza para convertir tuplas secuenciales (claves, valores) en un diccionario.

str (): se utiliza para convertir enteros en cadenas.

complex (real, imag) -Esta función convierte un número real en un número complejo (número real, imagen).

P14. ¿Se requiere sangría en Python?

Python requiere sangría. Especifica un bloque de código. Todo el código en bucles, clases, funciones, etc. se especifica en bloques con sangría. Por lo general, se realiza con cuatro caracteres de espacio. Si su código no necesita sangría, no se ejecutará con precisión y arrojará errores.

P15. ¿Cuál es la diferencia entre una matriz de Python y una lista?

Las matrices y listas en Python tienen la misma forma de almacenar datos. Sin embargo, una matriz solo puede contener un único elemento de tipo de datos y una lista puede contener cualquier elemento de tipo de datos.

P16. ¿Cuáles son las funciones en Python?

Una función es un bloque de código que solo se ejecutará cuando se la llame. Para definir una función en Python, debe usar la palabra clave def.

P17. ¿Qué es __init__?

__init__ es un método o estructura en Python. Al crear un nuevo objeto / instancia de la clase, este método se llamará automáticamente para asignar memoria. Todas las clases tienen métodos __init__.
Ejemplo de código

class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def show(self):
        print("我的名字叫%s,我今年%d岁"%(self.name,self.age))

person1=Person("小米",25)
person1.show()

Producción:

我的名字叫小米,我今年25

P18. ¿Qué es una función lambda?

Una función lambda también se denomina función anónima. La función puede contener cualquier número de parámetros, pero solo puede haber una declaración para realizar una operación.

P19. ¿Qué es uno mismo en Python?

self es una instancia u objeto de la clase. En Python, self se incluye en el primer parámetro. Sin embargo, este no es el caso en Java, es opcional. Ayuda a distinguir métodos y propiedades de clases con variables locales. La variable self en el método init se refiere al objeto recién creado, mientras que en otros métodos, se refiere al objeto cuyo método se llama.

P20: ¿Cuál es la distinción entre romper, continuar y aprobar?

Referencia:
[Python] La diferencia entre pasar, continuar y romper

P21. ¿Qué significa [:: - 1}?

[:: - 1] se usa para invertir el orden de una matriz o secuencia.
Código de muestra:

a='python'
b=a[::-1]
print(b) #nohtyp
c=a[::-2]
print(c) #nhy
#从后往前数的话,最后一个位置为-1
d=a[:-1]  #从位置0到位置-1之前的数
print(d)  #pytho
e=a[:-2]  #从位置0到位置-2之前的数
print(e)  #pyth

Referencia: [: -1] y [:: - 1] en python

P22. ¿Cómo aleatorizar los elementos de una lista en Python?

Puede utilizar la función de reproducción aleatoria para aleatorizar los elementos de la lista. Los ejemplos son los siguientes:

import random

words = ["python", "java", "constant", "immutable"]
random.shuffle(words)
print(words)

Producción

['java', 'constant', 'python', 'immutable']

P23. ¿Qué es un iterador de Python?

Los iteradores son objetos que se pueden atravesar o iterar.

Iterador: un iterador puede considerarse como un objeto especial. Cada vez que se llama al objeto, devolverá su siguiente elemento. Desde el punto de vista de la implementación, un objeto iterador debe definir el método __iter __ () y el objeto del siguiente ( ) método.

P24. ¿Cómo generar números aleatorios en Python?

El módulo aleatorio es un módulo estándar para generar números aleatorios. El método se define como:

# 导入 random(随机数) 模块
import random
print(random.random()) #random.random()方法返回[0,1]范围内的浮点数
print(random.randint(0, 9))

El método random.random () devuelve un número de punto flotante en el rango [0,1]. Esta función genera números de coma flotante aleatorios. El método utilizado por la clase aleatoria es el método de enlace para ocultar la instancia. Puede utilizar una instancia de Random para mostrar un programa multiproceso que crea diferentes instancias de subprocesos. Los otros generadores aleatorios utilizados son:

randrange (a, b): Selecciona un número entero y define el rango entre [a, b]. Devuelve elementos seleccionando aleatoriamente elementos del rango especificado. No crea objetos de alcance.

uniforme (a, b): Selecciona un número de coma flotante definido en el rango de [a, b)

normalvariate (media, sdev): se utiliza para la distribución normal, donde media es el valor medio y sdev es el sigma utilizado para la desviación estándar.

Utilice y cree una instancia de la clase Random para crear un generador de números aleatorios múltiples independiente.

P29. ¿Cómo se escribe en mayúscula la primera letra de una cadena?

En Python, la función capitalize () puede poner en mayúscula la primera letra de una cadena. Si la cadena ya contiene letras mayúsculas al principio, devolverá la cadena original.

Código de muestra:

#!/usr/bin/python3
str = "this is string EXAMPLE from runoob....wow!!!"
print ("str.capitalize() : ", str.capitalize())#首字母大写,其他小写
print ("str.capitalize() : ", str.lower())#全部小写

Producción:

str.capitalize() :  This is string example from runoob....wow!!!
str.capitalize() :  this is string example from runoob....wow!!!

P38. ¿Por qué utilizar * args, ** kwargs?

Cuando no estamos seguros de cuántos parámetros pasar a la función, o queremos pasar la lista almacenada o la tupla de parámetros a la función, * args,**kwargsusamos kwargs cuando no sabemos cuántos argumentos de palabras clave se pasan a la función, o can Se utiliza para pasar el valor del diccionario como parámetro de palabra clave. Los identificadores args y kwargs son una convención, también puede usar* bob和** billy。

P46. ¿Cómo agregar valor a la matriz de Python?

Puede usar las funciones append (), extend () e insert (i, x) para agregar elementos a la matriz.

member = ['a','b','c','1','2',3]
print(member)
member.append("python")#可以在列表后方添加一个元素:
print(member)
member1 = ['one','two','three']
member.extend(member1)#可以在列表后方添加一个列表:
print(member)
member.insert(1,"h")#可以根据索引位置在指定的地方插入元素:注意索引起始值是0
print(member)

Producción

['a', 'b', 'c', '1', '2', 3]
['a', 'b', 'c', '1', '2', 3, 'python']
['a', 'b', 'c', '1', '2', 3, 'python', 'one', 'two', 'three']
['a', 'h', 'b', 'c', '1', '2', 3, 'python', 'one', 'two', 'three']

P47. ¿Cómo eliminar el valor de la matriz de Python?

Puede usar pop () o remove () para eliminar elementos de la matriz. La diferencia entre estas dos funciones es que la primera devuelve el valor eliminado, mientras que la segunda no.

a = ["a", "b",  "c","d", "e"]
print(a)
for item in a[:]:
    print(item)
    if item == "b":
        a.remove(item)#匹配删除
print(a)
a.pop(1)#根据索引删除,列表第二个数删除
print(a)

P50. ¿Cómo implementar subprocesos múltiples en Python?

Python tiene una biblioteca de subprocesos múltiples, pero el efecto de usar subprocesos múltiples para acelerar el código no es tan bueno.

Python tiene una estructura llamada Global Interpreter Lock (GIL). El GIL asegura que solo se pueda ejecutar un "hilo" a la vez. Un hilo obtiene el GIL para realizar operaciones relacionadas y luego pasa el GIL al siguiente hilo.

Aunque parece que los programas se ejecutan en paralelo por varios subprocesos, en realidad solo usan los mismos núcleos de CPU por turnos.

Todas estas transferencias GIL aumentan el costo de ejecución. Esto significa que el subproceso múltiple no hace que el programa se ejecute más rápido.

Q51, símbolos de Python //,% y / operaciones

% Es el resto
// es el número entero
/ es el cociente (punto flotante)

Código de muestra:

a = 9
print('这是%运算的结果'+str(a%2))
print('这是//运算的结果'+str(a//2))
print('这是/运算的结果'+str(a/2))

Resultado de salida:

这是%运算的结果1
这是//运算的结果4
这是/运算的结果4.5

1. ¡ Resumen de vómitos con sangre! Una colección de 50 preguntas de entrevistas de Python (con respuestas)
2. Niuke.com

https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475?tpId=188&tqId=37519&rp=1&ru=%2Factivity%2Foj&qru=%2Fta%2Fjob-code-high-week%2Fquestion=answer

https://www.cnblogs.com/zyjimmortalp/p/12669749.html

Supongo que te gusta

Origin blog.csdn.net/mao_hui_fei/article/details/114271615
Recomendado
Clasificación