小秦哥 发表于 4 天前

Python开辟面试120题

Python开辟面试120题

整合了一下我在网络上找的开辟面试题
仅供参考(无偿分享,麻烦给个点赞关注)
Python 基础 (20题)

1. Python 中的 __init__ 方法有什么作用?

答案: __init__ 是一个构造方法,在创建对象时自动调用。它通常用于初始化对象的属性。
class Person:
    def __init__(self, name, age):
      self.name = name
      self.age = age

person = Person("Alice", 30)
print(person.name)# 输出 "Alice"
2. Python 中的 *args 和 **kwargs 分别是什么?

答案:


[*]*args 用于接收不定命量的位置参数。
[*]**kwargs 用于接收不定命量的关键字参数。
def func(a, b, *args, **kwargs):
    print(a, b, args, kwargs)

func(1, 2, 3, 4, name="Alice")# 输出 1 2 (3, 4) {'name': 'Alice'}
3. 解释 Python 中的 GIL(全局解释器锁)。

答案: GIL是Python解释器中用来包管多线程在任意时刻只有一个线程可以执行的锁。这意味着即使在多核处置惩罚器上,Python的多线程也不能完全并行执行盘算麋集型使命。
4. Python 中的深拷贝和浅拷贝有什么区别?

答案:


[*]浅拷贝是对对象的引用拷贝,不会拷贝对象内部的子对象。
[*]深拷贝会递归地拷贝对象及其子对象,两个对象互不干扰。
import copy
a = ]
b = copy.copy(a)# 浅拷贝
c = copy.deepcopy(a)# 深拷贝
5. 如何实现 Python 的单例模式?

答案: 可以通过类的__new__方法来包管一个类只有一个实例。
class Singleton:
    _instance = None
    def __new__(cls):
      if cls._instance is None:
            cls._instance = super(Singleton, cls).__new__(cls)
      return cls._instance

singleton1 = Singleton()
singleton2 = Singleton()
print(singleton1 is singleton2)# 输出 True
6. Python 中的装饰器是什么?请写一个简单的装饰器示例。

答案: 装饰器是一个函数,用于修改其他函数的行为。示例:
def decorator(func):
    def wrapper():
      print("Before function call")
      func()
      print("After function call")
    return wrapper

@decorator
def say_hello():
    print("Hello!")

say_hello()# 输出 Before function call -> Hello! -> After function call
7. 解释 Python 中的 with 语句及其作用。

答案: with 语句用于简化资源管理,确保资源的开释(如文件关闭、数据库连接断开等)。
with open("file.txt", "r") as file:
    content = file.read()
8. Python 中的 yield 关键字有什么作用?

答案: yield 用于天生器函数,返回一个值并暂停函数的执行,答应在调用时继续迭代。
def my_gen():
    yield 1
    yield 2

gen = my_gen()
for i in gen:
    print(i)# 输出 1 和 2
9. 如何判断一个对象是否是可迭代的?

答案: 可以使用isinstance()检查对象是否是Iterable范例。
from collections.abc import Iterable
print(isinstance(, Iterable))# 输出 True
10. Python 中的 lambda 函数是什么?请写一个示例。

答案: lambda 是一种匿名函数,通常用于简单的函数定义。
add = lambda x, y: x + y
print(add(3, 5))# 输出 8
11. 解释 Python 中的 map、filter 和 reduce 函数。

答案:


[*]map 用于将函数作用于可迭代对象的每个元素。
[*]filter 用于根据条件过滤可迭代对象的元素。
[*]reduce 用于将可迭代对象的所有元素逐一累积为一个值。
from functools import reduce
print(map(lambda x: x * 2, ))# 输出
print(filter(lambda x: x % 2 == 0, ))# 输出
print(reduce(lambda x, y: x + y, ))# 输出 10
12. Python 中的 __slots__ 有什么作用?

答案: __slots__ 用于限定对象的属性,制止动态创建属性,节省内存。
class Person:
    __slots__ = ['name', 'age']

p = Person()
p.name = "Alice"
p.age = 30
# p.address = "123 St"# 会抛出 AttributeError
13. 如何实现 Python 的多线程和多进程?

答案:


[*]多线程使用threading模块。
[*]多进程使用multiprocessing模块。
import threading

def task():
    print("Threading task")

t = threading.Thread(target=task)
t.start()

import multiprocessing

def task():
    print("Multiprocessing task")

p = multiprocessing.Process(target=task)
p.start()
14. Python 中的 @staticmethod 和 @classmethod 有什么区别?

答案:


[*]@staticmethod 不须要访问类或实例。
[*]@classmethod 须要一个类作为第一个参数。
class MyClass:
    @staticmethod
    def static_method():
      print("Static method")
      
    @classmethod
    def class_method(cls):
      print("Class method")

MyClass.static_method()# Static method
MyClass.class_method()   # Class method
15. 解释 Python 中的 metaclass。

答案: Metaclass 是一个类的类,用于定制类的创建过程。可以通过type来实现。
class MyMeta(type):
    def __new__(cls, name, bases, dct):
      dct['custom_attribute'] = 'value'
      return super().__new__(cls, name, bases, dct)

class MyClass(metaclass=MyMeta):
    pass

obj = MyClass()
print(obj.custom_attribute)# 输出 'value'
16. Python 中的 asyncio 是什么?如何使用?

答案: asyncio 是用于编写异步I/O操纵的库,常用于网络编程。可以通过async和await关键字定义异步函数。
import asyncio

async def main():
    print("Hello")
    await asyncio.sleep(1)
    print("World")

asyncio.run(main())
17. 如何实现 Python 的上下文管理器?

答案: 上下文管理器通常通过定义__enter__和__exit__方法来实现。
class MyContextManager:
    def __enter__(self):
      print("Entering context")
      return self
   
    def __exit__(self, exc_type, exc_val, exc_tb):
      print("Exiting context")

with MyContextManager():
    print("Inside context")
18. Python 中的 functools.lru_cache 有什么作用?

答案: lru_cache 是一个装饰器,用于缓存函数的结果,淘汰重复盘算,提高性能。
from functools import lru_cache

@lru_cache
def expensive_function(n):
    print("Computing...")
    return n * 2

print(expensive_function(2))# 输出 Computing... 4
print(expensive_function(2))# 输出 4, 不再计算
19. 解释 Python 中的 collections 模块。

答案: collections 提供了许多额外的数据结构,例如 deque、defaultdict、Counter、OrderedDict 等。
from collections import defaultdict

d = defaultdict(int)
d['key'] += 1
print(d['key'])# 输出 1
20. Python 中的 enum 模块有什么作用?

答案: enum 模块用于创建枚举类,可以通过有名字的常量取代简单的整数或字符串。
from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

print(Color.RED)# 输出 Color.RED
Flask (20题)

1. Flask 是什么?它的主要特点是什么?

答案: Flask 是一个轻量级的 Python Web 框架,设计上简单易用,灵活性高。其主要特点包括:


[*]轻量级和模块化,可以根据需求选择不同的扩展。
[*]内置开辟服务器和调试器。
[*]使用 Jinja2 模板引擎和 Werkzeug 库。
[*]易于扩展,支持许多第三方扩展。
2. Flask 中的路由是如何定义的?

答案: 在 Flask 中,通过 @app.route() 装饰器来定义路由。路由将 URL 与视图函数绑定。
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Flask!"
3. 如何在 Flask 中处置惩罚 GET 和 POST 请求?

答案: Flask 通过视图函数的 methods 参数来指定请求范例(默认为 GET)。可以指定 GET、POST 或者两者。
from flask import Flask, request

@app.route('/', methods=['GET', 'POST'])
def handle_request():
    if request.method == 'POST':
      return 'POST request received'
    return 'GET request received'
4. Flask 中的 request 对象有什么作用?

答案: request 对象是用来获取客户端请求信息的,例如:查询参数、表单数据、文件上传等。
from flask import request

@app.route('/submit', methods=['POST'])
def submit_form():
    username = request.form['username']
    return f'Hello, {username}'
5. 如何在 Flask 中实现 URL 参数传递?

答案: Flask 答应在路由中定义 URL 参数,通过 <type:name> 语法进行传递。
@app.route('/user/<username>')
def show_user(username):
    return f'User: {username}'
6. Flask 中的 url_for 函数有什么作用?

答案: url_for() 用于动态天生 URL,可以制止硬编码路径,特别实用于天生指向视图函数的链接。
from flask import url_for

@app.route('/login')
def login():
    return "Login Page"

@app.route('/')
def home():
    return f'Go to login page: <a href="{url_for("login")}">Login</a>'
7. 如何在 Flask 中处置惩罚静态文件?

答案: Flask 会自动处置惩罚静态文件,通常放置在 static 文件夹中。通过 url_for('static', filename='path_to_file') 引用静态文件。
@app.route('/')
def home():
    return '<img src="' + url_for('static', filename='image.jpg') + '" />'
8. Flask 中的 g 对象是什么?如何使用?

答案: g 是一个临时的全局对象,实用于每个请求周期,通常用于存储在请求处置惩罚期间须要共享的数据。
from flask import g

@app.before_request
def before_request():
    g.user = 'Alice'

@app.route('/')
def index():
    return f'User: {g.user}'
9. 如何在 Flask 中实现会话管理?

答案: Flask 通过 session 对象来管分析话,通常用于存储用户的会话数据,基于加密的 cookie 实现。
from flask import session

@app.route('/set_session')
def set_session():
    session['user'] = 'Alice'
    return 'Session set'

@app.route('/get_session')
def get_session():
    return session.get('user', 'Guest')
10. Flask 中的 before_request 和 after_request 是什么?

答案:


[*]before_request 用于在每次请求处置惩罚之前执行某些操纵。
[*]after_request 用于在请求处置惩罚完成之后对响应进行修改。
@app.before_request
def before_request():
    print("Before Request")

@app.after_request
def after_request(response):
    print("After Request")
    return response
11. 如何在 Flask 中实现错误处置惩罚?

答案: Flask 提供了 @app.errorhandler 装饰器,用于处置惩罚指定的 HTTP 错误。
@app.errorhandler(404)
def page_not_found(error):
    return "Page not found", 404
12. Flask 中的 Blueprint 是什么?如何使用?

答案: Blueprint 用于组织和拆分 Flask 应用,使其更加模块化。可以将视图、静态文件和模板封装成蓝图,然后再注册到应用上。
from flask import Blueprint

mod = Blueprint('mod', __name__)

@mod.route('/hello')
def hello():
    return 'Hello from Blueprint!'

app.register_blueprint(mod, url_prefix='/mod')
13. 如何在 Flask 中实现 RESTful API?

答案: Flask 支持 RESTful API 设计,常用的做法是使用 Flask 路由结合 HTTP 方法(如 GET, POST, PUT, DELETE)来实现。
@app.route('/api/user/<int:id>', methods=['GET'])
def get_user(id):
    return f'User {id}'
14. Flask 中的 Jinja2 模板引擎是什么?如何使用?

答案: Jinja2 是 Flask 默认的模板引擎,用于将数据动态渲染到 HTML 页面中。模板语法包括变量、控制结构、过滤器等。
from flask import render_template

@app.route('/')
def home():
    return render_template('index.html', name='Alice')
index.html:
<p>Hello, {{ name }}!</p>
15. 如何在 Flask 中实现文件上传?

答案: Flask 可以使用 request.files 处置惩罚文件上传。须要配置一个上传文件的目录并使用 save() 方法保存文件。
from flask import request

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files['file']
    file.save(f'./uploads/{file.filename}')
    return 'File uploaded successfully!'
16. Flask 中的 Flask-SQLAlchemy 是什么?如何使用?

答案: Flask-SQLAlchemy 是 Flask 的一个扩展,用于简化 SQLAlchemy ORM 的使用,方便与数据库交互。
from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

@app.route('/add_user')
def add_user():
    user = User(name="Alice")
    db.session.add(user)
    db.session.commit()
    return 'User added!'
17. 如何在 Flask 中实现用户认证?

答案: 可以使用 Flask-Login 扩展来实现用户认证,包括登录、登出和用户会话管理。
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user

login_manager = LoginManager(app)

class User(UserMixin):
    def __init__(self, id):
      self.id = id

@login_manager.user_loader
def load_user(user_id):
    return User(user_id)

@app.route('/login')
def login():
    user = User(1)
    login_user(user)
    return 'User logged in!'
18. Flask 中的 Flask-WTF 是什么?如何使用?

答案: Flask-WTF 是一个 Flask 扩展,它封装了 WTForms,使得表单验证和 CSRF 保护变得更加轻便。
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired

class NameForm(FlaskForm):
    name = StringField('Name', validators=)

@app.route('/submit', methods=['GET', 'POST'])
def submit_form():
    form = NameForm()
    if form.validate_on_submit():
      return f'Hello, {form.name.data}!'
    return render_template('form.html', form=form)
19. 如何在 Flask 中实现单元测试?

答案: Flask 提供了测试客户端,可以模仿请求并进行断言,测试视图函数和 API。
import unittest
from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return 'Hello, Flask!'

class FlaskTestCase(unittest.TestCase):
    def setUp(self):
      self.app = app.test_client()
   
    def test_home(self):
      response = self.app.get('/')
      self.assertEqual(response.data, b'Hello, Flask!')

if __name__ == '__main__':
    unittest.main()
20. Flask 中的 Flask-Migrate 是什么?如何使用?

答案: Flask-Migrate 是 Flask 的数据库迁徙工具,基于 Alembic,用于管理数据库模式的变化。
from flask_migrate import Migrate

migrate = Migrate(app, db)
Django (20题)

1. Django 是什么?它的主要特点是什么?

答案: Django 是一个高级的 Python Web 框架,用于快速开辟 Web 应用。其主要特点包括:


[*]强大的 ORM(对象关系映射)体系。
[*]内置的管理界面,易于管理后台。
[*]强大的路由体系,支持 RESTful API。
[*]内建用户认证体系。
[*]提供了安全性保障,如防止跨站请求伪造(CSRF)、SQL 注入等。
[*]高度的可扩展性和丰富的第三方插件。
2. Django 中的 MVT 模式是什么?

答案: Django 是基于 MVT(Model-View-Template)架构的:


[*]Model:数据库模型,定义了数据结构。
[*]View:业务逻辑处置惩罚,接收请求并返回响应。
[*]Template:前端模板,负责呈现 HTML 页面。
3. 如何在 Django 中创建一个项目和应用?

答案:


[*]创建一个 Django 项目:django-admin startproject projectname
[*]创建一个 Django 应用:python manage.py startapp appname
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
4. Django 中的 settings.py 文件有什么作用?

答案: settings.py 是 Django 项目的配置文件,包含数据库配置、静态文件路径、已安装的应用、密钥等配置信息。
5. 如何在 Django 中定义模型?

答案: 使用 Django 的 ORM 定义模型,模型继续自 django.db.models.Model 类。
from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    published_date = models.DateField()
6. Django 中的 makemigrations 和 migrate 下令有什么作用?

答案:


[*]makemigrations 下令用来创建数据库迁徙文件,它会检测模型的变化并天生迁徙文件。
[*]migrate 下令用来执行数据库迁徙,应用迁徙文件中的变化。
python manage.py makemigrations
python manage.py migrate
7. 如何在 Django 中实现数据查询?

答案: Django 提供了强大的查询接口,可以通过 QuerySet 进行数据查询。示例:
# 获取所有书籍
books = Book.objects.all()

# 获取指定作者的书籍
books_by_author = Book.objects.filter(author='J.K. Rowling')
8. Django 中的 QuerySet 是什么?

答案: QuerySet 是 Django 中用于数据库查询的对象,它代表了对数据库中数据的查询。QuerySet 是惰性执行的,只有在被访问时才会执行查询。
9. 如何在 Django 中实现表单处置惩罚?

答案: Django 提供了 django.forms 模块来处置惩罚表单。通过创建表单类继续自 forms.Form 或 forms.ModelForm,来定义和处置惩罚表单。
from django import forms

class BookForm(forms.Form):
    title = forms.CharField(max_length=100)
    author = forms.CharField(max_length=100)
10. Django 中的 admin 站点是什么?如何自定义?

答案: Django 自带的 admin 站点是一个管理后台,用于管理数据模型。可以通过在 admin.py 文件中注册模型来使用。
from django.contrib import admin
from .models import Book

admin.site.register(Book)
可以通过自定义 ModelAdmin 类来定制显示和功能。
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'author')

admin.site.register(Book, BookAdmin)
11. 如何在 Django 中实现用户认证?

答案: Django 提供了内置的用户认证体系,可以通过 django.contrib.auth 来处置惩罚用户登录、登出、注册等功能。
from django.contrib.auth.models import User

# 创建用户
user = User.objects.create_user('username', 'email', 'password')

# 用户登录
from django.contrib.auth import authenticate, login
user = authenticate(username='username', password='password')
login(request, user)
12. Django 中的 middleware 是什么?如何自定义?

答案: Middleware 是 Django 中用于处置惩罚请求和响应的钩子函数。它们位于请求和响应处置惩罚的过程中,可以用于做日记记载、认证、CSRF 保护等操纵。
from django.utils.deprecation import MiddlewareMixin

class CustomMiddleware(MiddlewareMixin):
    def process_request(self, request):
      print('Processing request')
   
    def process_response(self, request, response):
      print('Processing response')
      return response
13. 如何在 Django 中实现 RESTful API?

答案: 可以使用 Django 自带的 django.http.JsonResponse 或者借助第三方库,如 Django REST Framework(DRF),来创建 RESTful API。
from django.http import JsonResponse

def api_view(request):
    data = {'key': 'value'}
    return JsonResponse(data)
14. Django 中的 DRF(Django REST Framework)是什么?

答案: Django REST Framework(DRF)是一个强大的工具集,用于构建 Web API。它提供了序列化、视图集、认证、权限控制等功能,帮助快速构建 API。
from rest_framework import serializers

class BookSerializer(serializers.Serializer):
    title = serializers.CharField(max_length=100)
    author = serializers.CharField(max_length=100)
15. 如何在 Django 中实现缓存?

答案: Django 支持多种缓存后端,常用的如内存缓存、文件缓存、数据库缓存、Memcached 等。可以通过 cache 模块来实现缓存。
from django.core.cache import cache

# 存储数据
cache.set('my_key', 'some_value', timeout=60)

# 获取数据
value = cache.get('my_key')
16. Django 中的 signals 是什么?如何使用?

答案: Signals 是 Django 的一种用于解耦应用逻辑的机制,可以在某些事件发生时自动触发特定操纵(例如:保存模型、用户登录等)。
from django.db.models.signals import post_save
from django.dispatch import receiver

@receiver(post_save, sender=Book)
def book_saved(sender, instance, **kwargs):
    print(f'Book {instance.title} saved!')
17. 如何在 Django 中实现单元测试?

答案: Django 提供了内置的测试框架,可以使用 TestCase 类来编写单元测试。
from django.test import TestCase
from .models import Book

class BookTestCase(TestCase):
    def setUp(self):
      self.book = Book.objects.create(title='Django for Beginners', author='John Doe')

    def test_book_title(self):
      self.assertEqual(self.book.title, 'Django for Beginners')
18. Django 中的 static 和 media 文件有什么区别?

答案:


[*]static 文件:存放网站的静态文件,如 CSS、JavaScript、图片等,通常由 Django 自动提供。
[*]media 文件:存放用户上传的文件,如图片、文档等。
19. 如何在 Django 中实现国际化?

答案: Django 提供了 django.utils.translation 模块来实现国际化(i18n)和当地化(l10n)。通过使用 gettext() 和 ugettext() 来翻译文本。
from django.utils.translation import ugettext as _

def my_view(request):
    message = _('Welcome to Django!')
    return HttpResponse(message)
20. Django 中的 CBV(Class-Based Views) 是什么?

答案: CBV(Class-Based Views)是一种基于类的视图方式,它通过继续 Django 的 View 类来处置惩罚请求,提供了更多的组织结构和重用性。
from django.http import HttpResponse
from django.views import View

class HelloWorldView(View):
    def get(self, request):
      return HttpResponse('Hello, World!')
Python 标准库 (20题)

1. Python 中的 os 模块有什么作用?

答案: os 模块提供了与操纵体系交互的功能,如文件操纵、目录操纵、环境变量访问、进程管理等。常见函数包括 os.path、os.remove、os.mkdir、os.environ 等。
import os
os.mkdir('new_folder')# 创建目录
os.remove('file.txt')# 删除文件
2. Python 中的 sys 模块有什么作用?

答案: sys 模块提供了与 Python 解释器相关的功能,如下令行参数处置惩罚、解释器退出、标准输入输出等。常用函数包括 sys.argv、sys.exit()、sys.path 等。
import sys
print(sys.argv)# 打印命令行参数
sys.exit(0)# 退出程序
3. 如何使用 datetime 模块处置惩罚日期和时间?

答案: datetime 模块用于处置惩罚日期和时间。常见操纵包括获取当前日期和时间、日期格式化、日期相加减等。
from datetime import datetime, timedelta

# 获取当前时间
now = datetime.now()

# 格式化日期
formatted_date = now.strftime('%Y-%m-%d %H:%M:%S')

# 日期加减
new_date = now + timedelta(days=5)
4. Python 中的 json 模块有什么作用?

答案: json 模块用于处置惩罚 JSON 数据,支持将 Python 对象转化为 JSON 格式(json.dumps)和将 JSON 格式数据解析为 Python 对象(json.loads)。
import json

# Python 对象转 JSON 字符串
data = {'name': 'John', 'age': 30}
json_str = json.dumps(data)

# JSON 字符串转 Python 对象
parsed_data = json.loads(json_str)
5. 如何使用 re 模块进行正则表达式匹配?

答案: re 模块提供了正则表达式的匹配、搜索、更换等功能。常用函数有 re.match()、re.search()、re.findall() 和 re.sub()。
import re

pattern = r'\d+'# 匹配数字
text = 'The price is 100 dollars'

# 查找数字
result = re.findall(pattern, text)
6. Python 中的 itertools 模块有什么作用?

答案: itertools 模块提供了高效的迭代器工具,用于创建无穷序列、组合、排列等操纵。常用函数有 itertools.count()、itertools.permutations()、itertools.combinations() 等。
import itertools

# 获取排列
perms = itertools.permutations()
7. 如何使用 collections 模块中的 defaultdict?

答案: defaultdict 是 collections 模块中的一种字典子类,当访问不存在的键时,会返回默认值而不会抛出 KeyError。
from collections import defaultdict

d = defaultdict(int)# 默认值为 int(),即 0
d['a'] += 1
print(d['a'])# 输出 1
8. Python 中的 logging 模块有什么作用?

答案: logging 模块用于记载日记,可以输出日记到控制台、文件或远程服务。它支持不同级别的日记(如 DEBUG、INFO、WARNING、ERROR、CRITICAL)。
import logging

logging.basicConfig(level=logging.DEBUG)
logging.info('This is an info message.')
logging.error('This is an error message.')
9. 如何使用 subprocess 模块执行外部下令?

答案: subprocess 模块答应你启动新的进程,并连接到它们的输入输出流。常用函数有 subprocess.run() 和 subprocess.Popen()。
import subprocess

# 执行命令
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)
10. Python 中的 threading 模块有什么作用?

答案: threading 模块提供了多线程支持,可以用于并发执行使命。常用类有 Thread,可以通过继续 Thread 类或使用 target 参数来指定线程函数。
import threading

def print_hello():
    print("Hello, world!")

t = threading.Thread(target=print_hello)
t.start()
t.join()# 等待线程完成
11. 如何使用 multiprocessing 模块实现多进程?

答案: multiprocessing 模块答应你创建多个进程进行并行盘算。常用类有 Process,可以通过继续 Process 类或使用 target 参数来指定进程函数。
import multiprocessing

def print_hello():
    print("Hello from process!")

p = multiprocessing.Process(target=print_hello)
p.start()
p.join()# 等待进程完成
12. Python 中的 socket 模块有什么作用?

答案: socket 模块用于网络通信,可以实现客户端和服务器之间的数据传输。常用函数包括 socket.socket()、bind()、listen()、accept() 等。
import socket

# 创建一个 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost', 8080))
s.sendall(b'Hello, server!')
13. 如何使用 argparse 模块解析下令行参数?

答案: argparse 模块用于解析下令行参数。可以通过 ArgumentParser 类定义参数并获取它们的值。
import argparse

parser = argparse.ArgumentParser(description="A simple argument parser")
parser.add_argument('--name', type=str, help="Your name")
args = parser.parse_args()

print(f"Hello, {args.name}!")
14. Python 中的 pathlib 模块有什么作用?

答案: pathlib 模块提供了面向对象的路径操纵方式,可以方便地处置惩罚文件路径、文件和目录操纵。
from pathlib import Path

# 创建路径对象
p = Path('/home/user')
print(p.exists())# 检查路径是否存在
15. 如何使用 shutil 模块进行文件和目录操纵?

答案: shutil 模块提供了高效的文件和目录操纵函数,如复制、移动、删除文件和目录。
import shutil

# 复制文件
shutil.copy('source.txt', 'destination.txt')

# 删除目录
shutil.rmtree('folder')
16. Python 中的 random 模块有什么作用?

答案: random 模块用于天生随机数,常用函数有 random.randint()、random.choice()、random.shuffle() 等。
import random

# 生成一个随机整数
num = random.randint(1, 10)

# 从列表中随机选择一个元素
item = random.choice()
17. 如何使用 unittest 模块进行单元测试?

答案: unittest 模块提供了编写和执行单元测试的功能。通过继续 unittest.TestCase 来创建测试类,并使用断言方法进行验证。
import unittest

class MyTestCase(unittest.TestCase):
    def test_addition(self):
      self.assertEqual(1 + 2, 3)

if __name__ == '__main__':
    unittest.main()
18. Python 中的 functools 模块有什么作用?

答案: functools 模块提供了高阶函数,用于简化函数操纵。常勤劳能包括 lru_cache、partial、wraps 等。
from functools import partial

# 创建部分函数
add_5 = partial(lambda x, y: x + y, 5)
print(add_5(3))# 输出 8
19. 如何使用 csv 模块处置惩罚 CSV 文件?

答案: csv 模块用于读取和写入 CSV 文件。常用函数有 csv.reader() 和 csv.writer()。
import csv

# 读取 CSV 文件
with open('data.csv', mode='r') as file:
    reader = csv.reader(file)
    for row in reader:
      print(row)

# 写入 CSV 文件
with open('output.csv', mode='w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['name', 'age'])
    writer.writerow(['John', 30])
20. Python 中的 enum 模块有什么作用?

答案: enum 模块提供了定义枚举范例的功能,答应你创建具名常量,使代码更具可读性。
from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

print(Color.RED)
Python 常用第三方库 (20题)

1. requests 库有什么作用?如何使用?

答案: requests 是一个简化 HTTP 请求的库,用于发送 HTTP 请求、处置惩罚响应等。常用于发送 GET、POST 请求和处置惩罚 JSON 数据。
import requests

# 发送 GET 请求
response = requests.get('https://jsonplaceholder.typicode.com/posts')
print(response.status_code)# 输出状态码
print(response.json())# 输出响应的 JSON 数据
2. numpy 库有什么作用?请写一个示例。

答案: numpy 是一个强大的数值盘算库,提供高效的数组操纵、矩阵盘算、数学函数等功能。
import numpy as np

# 创建一个二维数组
arr = np.array([, ])

# 数组加法
result = arr + 5
print(result)
3. pandas 库有什么作用?请写一个示例。

答案: pandas 是用于数据分析的库,提供了高效的数据结构(如 DataFrame)和数据操纵方法,广泛用于处置惩罚结构化数据。
import pandas as pd

# 创建一个 DataFrame
data = {'name': ['Alice', 'Bob'], 'age': }
df = pd.DataFrame(data)

# 数据筛选
print(df > 25])
4. matplotlib 库有什么作用?请写一个示例。

答案: matplotlib 是用于绘制各种图表的库,常用于数据可视化。
import matplotlib.pyplot as plt

# 简单的折线图
x =
y =
plt.plot(x, y)
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.show()
5. scikit-learn 库有什么作用?请写一个示例。

答案: scikit-learn 是一个机器学习库,提供了数据预处置惩罚、模型训练和评估工具。
from sklearn.linear_model import LinearRegression
import numpy as np

# 数据
X = np.array([, , , , ])
y = np.array()

# 训练模型
model = LinearRegression().fit(X, y)

# 预测
predictions = model.predict([])
print(predictions)
6. tensorflow 库有什么作用?请写一个示例。

答案: tensorflow 是一个开源的机器学习框架,主要用于深度学习模型的开辟和训练。
import tensorflow as tf

# 创建一个简单的常量张量
hello = tf.constant('Hello, TensorFlow!')
print(hello.numpy())# 在 TensorFlow 2.x 中直接获取值
7. pytest 库有什么作用?请写一个示例。

答案: pytest 是一个用于 Python 的单元测试框架,支持自动化测试、断言、测试用例组织等功能。
# test_sample.py
def test_addition():
    assert 1 + 1 == 2

# 运行 pytest 测试
# pytest test_sample.py
8. beautifulsoup4 库有什么作用?请写一个示例。

答案: beautifulsoup4 用于解析 HTML 和 XML 文件,常用于网页抓取(Web Scraping)。
from bs4 import BeautifulSoup

html = '<html><head><title>Test</title></head><body><h1>Hello, World!</h1></body></html>'
soup = BeautifulSoup(html, 'html.parser')

# 获取网页标题
print(soup.title.string)
9. sqlalchemy 库有什么作用?请写一个示例。

答案: sqlalchemy 是一个数据库工具库,提供了 SQL 构造、ORM 映射等功能,用于与数据库交互。
from sqlalchemy import create_engine

# 创建数据库连接
engine = create_engine('sqlite:///:memory:')

# 连接并执行查询
with engine.connect() as connection:
    result = connection.execute("SELECT 1 + 1")
    print(result.fetchone())
10. celery 库有什么作用?请写一个示例。

答案: celery 是一个分布式使命队列,用于异步使命处置惩罚。
from celery import Celery

# 创建 Celery 实例
app = Celery('tasks', broker='redis://localhost:6379/0')

@app.task
def add(x, y):
    return x + y

# 执行任务
result = add.delay(4, 6)
print(result.get())
11. redis 库有什么作用?请写一个示例。

答案: redis 是一个用于与 Redis 数据库交互的 Python 客户端库,支持缓存、消息队列等功能。
import redis

# 连接 Redis
r = redis.Redis(host='localhost', port=6379, db=0)

# 设置和获取值
r.set('foo', 'bar')
print(r.get('foo'))
12. flask-restful 库有什么作用?请写一个示例。

答案: flask-restful 是一个扩展库,用于构建 RESTful API,基于 Flask。
from flask import Flask
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)

class HelloWorld(Resource):
    def get(self):
      return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

if __name__ == '__main__':
    app.run(debug=True)
13. django-rest-framework 库有什么作用?请写一个示例。

答案: django-rest-framework 是 Django 的一个扩展库,用于构建 Web API,提供了视图集、序列化、认证、权限等功能。
from rest_framework import serializers, viewsets
from rest_framework.response import Response
from rest_framework.decorators import api_view

# 序列化器
class ItemSerializer(serializers.Serializer):
    name = serializers.CharField(max_length=100)
    description = serializers.CharField()

# 视图集
class ItemViewSet(viewsets.ViewSet):
    def list(self, request):
      items = [{"name": "item1", "description": "desc1"}]
      serializer = ItemSerializer(items, many=True)
      return Response(serializer.data)
14. openpyxl 库有什么作用?请写一个示例。

答案: openpyxl 用于读取和写入 Excel 文件,支持 .xlsx 格式。
from openpyxl import Workbook

# 创建工作簿和工作表
wb = Workbook()
ws = wb.active

# 写入数据
ws['A1'] = 'Hello'
ws['B1'] = 'World'

# 保存文件
wb.save('example.xlsx')
15. pillow 库有什么作用?请写一个示例。

答案: Pillow 是 Python 的图像处置惩罚库,支持打开、修改和保存图片。
from PIL import Image

# 打开图片
img = Image.open('image.jpg')

# 图像操作
img = img.rotate(90)

# 保存修改后的图片
img.save('rotated_image.jpg')
16. pymongo 库有什么作用?请写一个示例。

答案: pymongo 是一个用于与 MongoDB 数据库交互的库,提供了对 MongoDB 的增、查、改、删操纵。
from pymongo import MongoClient

# 连接 MongoDB
client = MongoClient('mongodb://localhost:27017/')

# 选择数据库和集合
db = client['mydatabase']
collection = db['mycollection']

# 插入数据
collection.insert_one({'name': 'Alice', 'age': 25})

# 查询数据
print(collection.find_one({'name': 'Alice'}))
17. pygame 库有什么作用?请写一个示例。

答案: pygame 是一个用于开辟游戏的库,提供了图形、音频、事件处置惩罚等功能。
import pygame

# 初始化 pygame
pygame.init()

# 创建游戏窗口
screen = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Pygame Example')

# 主循环
running = True
while running:
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
            running = False
pygame.quit()
18. scrapy 库有什么作用?请写一个示例。

答案: scrapy 是一个用于爬取网页的强大框架,支持提取网站数据并存储到各种格式(如 JSON、CSV、数据库等)。它具有高度的可扩展性,而且可以自动处置惩罚页面下载、解析和数据提取。
示例:
import scrapy

class QuotesSpider(scrapy.Spider):
    name = 'quotes'
    start_urls = ['http://quotes.toscrape.com']

    def parse(self, response):
      for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').get(),
                'author': quote.css('small::text').get(),
                'tags': quote.css('div.tags a.tag::text').getall(),
            }

# 使用 scrapy 命令行启动爬虫:scrapy runspider quotes_spider.py
在这个示例中,QuotesSpider 爬虫从 http://quotes.toscrape.com 开始,提取每个引号的文本、作者和标签。
19. pyinstaller 库有什么作用?请写一个示例。

答案: PyInstaller 是一个将 Python 程序打包成独立可执行文件的工具。它支持在 Windows、macOS 和 Linux 平台上将 Python 脚本打包为可执行文件,方便分发和摆设。
示例:

[*]假设你有一个名为 hello.py 的 Python 文件:
# hello.py
print("Hello, PyInstaller!")

[*]使用 PyInstaller 打包:
pip install pyinstaller
pyinstaller --onefile hello.py

[*]打包后,dist/ 目录下将天生一个 hello 可执行文件,可以在没有安装 Python 环境的机器上运行。
20. black 库有什么作用?请写一个示例。

答案: black 是一个 Python 代码格式化工具,可以自动将代码格式化为一致的风格,符合 PEP 8 标准。它能提高代码的可读性,并同一团队的代码风格。
示例:

[*]假设你有一个代码文件 example.py,代码格式不规范:
def example():
a= 1
    b= 2
return(a +b )

[*]使用 black 格式化代码:
pip install black
black example.py

[*]格式化后的代码:
def example():
    a = 1
    b = 2
    return a + b
black 会自动调解代码的缩进、空格和换行,以符合标准的代码风格。
MySQL (20题)

1. MySQL 中的主键(Primary Key)是什么?有何作用?

答案: 主键是表中一列或多列的组合,其值唯一且不可为空。主键的作用是唯一标识表中的每一行数据,包管数据的完备性。
2. 什么是外键(Foreign Key)?它的作用是什么?

答案: 外键是一个表中的列,它指向另一个表的主键或唯一键。外键的作用是包管表与表之间的关系完备性,确保引用的数据在目标表中存在。
3. 如何创建一个 MySQL 数据库?

答案:
CREATE DATABASE database_name;
4. 如何检察 MySQL 中的所有数据库?

答案:
SHOW DATABASES;
5. 如何删除 MySQL 中的数据库?

答案:
DROP DATABASE database_name;
6. 什么是索引(Index)?它的作用是什么?

答案: 索引是数据库表中一种数据结构,可以提高数据检索速度。索引通常通过 B 树或哈希表实现,常用于提高查询效率,特别是在 WHERE 子句中使用的列。
7. 在 MySQL 中,如何创建一个索引?

答案:
CREATE INDEX index_name ON table_name(column_name);
8. 什么是团结索引(Composite Index)?

答案: 团结索引是基于多个列创建的索引。当查询包含多个条件时,团结索引可以提高查询效率。团结索引的顺序很紧张,应该按照查询中出现的列顺序创建索引。
9. 什么是事务(Transaction)?事务的四个特性是什么?

答案: 事务是指一组操纵,要么全部成功,要么全部失败。事务的四个特性是 ACID:


[*]Atomaticity(原子性):事务中的所有操纵要么全部成功,要么全部失败。
[*]Consistency(一致性):事务开始前后,数据库的状态是一致的。
[*]Isolation(隔离性):事务之间的执行不会互干系扰。
[*]Durability(长期性):事务提交后,对数据库的修改是永世性的。
10. 如何在 MySQL 中开始和提交一个事务?

答案:
-- 开始事务
START TRANSACTION;

-- 执行一些操作

-- 提交事务
COMMIT;
11. 如何回滚一个事务?

答案:
ROLLBACK;
12. 在 MySQL 中,INNER JOIN 和 LEFT JOIN 有什么区别?

答案:


[*]INNER JOIN: 返回两个表中匹配的记载。如果没有匹配,则不返回结果。
[*]LEFT JOIN: 返回左表的所有记载,即使右表中没有匹配的记载也会返回,右表没有匹配的行会用 NULL 填充。
13. 什么是 GROUP BY 子句的作用?如何使用?

答案: GROUP BY 用于将查询结果按指定列分组,并对每个分组进行聚合操纵(如 COUNT、SUM、AVG 等)。
SELECT department, COUNT(*) FROM employees GROUP BY department;
14. 如何在 MySQL 中删除一张表?

答案:
DROP TABLE table_name;
15. 什么是视图(View)?视图的作用是什么?

答案: 视图是从一个或多个表中查询出来的假造表。视图通常用于简化复杂查询、提高数据安全性、实现数据隔离等。
16. 如何创建一个视图?

答案:
CREATE VIEW view_name AS
SELECT column1, column2 FROM table_name WHERE condition;
17. 如何在 MySQL 中修改表的结构?

答案: 使用 ALTER TABLE 语句来修改表的结构,例如添加、删除或修改列。
ALTER TABLE table_name ADD column_name datatype;
ALTER TABLE table_name DROP COLUMN column_name;
ALTER TABLE table_name MODIFY COLUMN column_name new_datatype;
18. 如何在 MySQL 中添加一个列的默认值?

答案:
ALTER TABLE table_name MODIFY COLUMN column_name datatype DEFAULT default_value;
19. 什么是 AUTO_INCREMENT?如何使用?

答案: AUTO_INCREMENT 是一个 MySQL 特性,用于为列自动天生唯一的数字值,通常用于主键列。
CREATE TABLE table_name (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100)
);
20. 什么是 MySQL 的 LIMIT 子句?如何使用?

答案: LIMIT 子句用于限定查询结果的数量,常用于分页查询。
SELECT * FROM table_name LIMIT 10; -- 查询前 10 条记录
SELECT * FROM table_name LIMIT 5 OFFSET 10; -- 从第 11 条开始查询 5 条记录

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Python开辟面试120题