python技术面试题(二十三)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: python技术面试题(二十三)

每日分享

The brain is like a muscle. When it is in use we feel very good. Understanding is joyous.

大脑就像肌肉一样,当我们使用时会感到愉悦。理解是充满快乐的。

小闫语录:

勤于思考,别让你的小脑瓜生锈哦~


Unix

1.查询所有环境变量的命令是: env 。设置一个新变量的命令是: export

2.动态查看日志尾部几行的命令是:

tail -n file

查看前面的几行使用 head-n 命令。

3.查询脚本定时任务的命名是:

crontab -l

4.screen命令中,创建新会话使用:

screen -S <name>
vim test

若要终止会话,先退出 vim ,然后使用快捷键 ctrl + d

查询所有会话使用:

screen -ls

暂时离开当前 session 使用:

Crtl + a +d

保存进程并退出作业(程序在 screen 中继续运行,screen -ls 可查看)

5.批量杀掉含有 filter 名称的进程:

ps -ef|grep filter|grep -v grep|cut -c 9-15|xargs kill -9

管道符"|"用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。

"ps -ef" 是 linux 里查看所有进程的命令。这时检索出的进程将作为下一条命令 "grep filter" 的输入。

"grep filter" 的输出结果是,所有含有关键字 "filter" 的进程。

"grep -v grep" 是在列出的进程中去除含有关键字 "grep" 的进程。

"cut -c 9-15" 是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。

"xargs kill -9" 中的 xargs 命令是用来把前面命令的输出结果(PID)作为"kill -9"命令的参数,并执行该命令。"kill -9"会强行杀掉指定进程。

其它类似的情况,只需要修改"grep filter"中的关键字部分就可以了。


git

1.查看当前 git 仓库的状态:

git status

2.什么时候使用 git stash

暂存

3.如何从 git 中删除文件,并将其从文件系统中删除:

# 删除文件
  rm 文件名
  # git确定删除文件,对比添加文件git add
  git rm 文件名
  # 删除后记录删除操作版本
  git commit -m '删除描述'

4.本地创建并切换分支到 dev:

git checkout -b dev

5.将分支推送到远程:

git push -u origin dev

6.在本地打标签:

git tag -a 标签名 -m '标签描述'

7.将标签推送到远程仓库:

1. git push origin 标签名



Python 基础知识

1.with 是什么,适用场景?

with 语句是 Pyhton 提供的一种简化语法,with 语句是从 Python 2.5 开始引入的一种与异常处理相关的功能。

with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的『清理』操作,释放资源。

比如下面的例子:

with open('test', 'w') as f:
    f.write('欢迎关注 小闫笔记 ')

文件在使用后会自动关闭。

2.with 的执行原理,如何自己实现一个 上下文管理器?

上下文管理器背后工作的机制是使用Python的方法: __enter____exit__

__enter__ 方法会在执行 with 后面的语句时执行,一般用来处理操作前的内容。比如一些创建对象,初始化等。

__exit__方法会在 with 内的代码执行完毕后执行,一般用来处理一些善后收尾工作,比如文件的关闭,数据库的关闭等。

自己可以通过,如下的形式实现:

class email(objec):
    def __enter__(self):
        pass
    def __exit__(self):
        pass

使用的时候:

with email():

伪代码只表示意思,具体不实现功能

3.如下代码输出什么?

def func_error():
    try:
        IO 错误代码
    except IOError:
        return 1
    finally:
        return 2
test = func_error()
print(test)

输出的结果为 2。

web 框架

1.在 Django 中如果有一些复杂的 SQL 指令,怎么使用原生的 SQL 命令:

第一种方式:使用游标进行操作

from django.db import connection
# 创建游标
cursor = connection.cursor()
# 执行 SQL 语句
cursor.execute(SQL 语句)
# 返回结果
row = cursor.fetchone()
row = cursor.fetchall()

第二种方式:使用 raw() 方法

  1. 模型.objects.raw(SQL 语句)

返回的是一个 RawQuerySet

2.APIView 和 View 的区别?

答:APIView 是 View 类的子类,在 View 类的基础上添加了一些额外的功能。

功能

1.视图中 request 对象不再是 Django 原始的 HTTPRequest 类的对象,而是由 DRF 框架封装成的 Request 类的对象。比如 request.data 保存解析之后的请求体的数据,并且已经解析成了字典或者类字典,相当于包含 Django 原始 request 对象中的 request.body | request.POST | request.FILES。再比如 request.query_params保存解析之后的查询字符串的数据,并且已经解析成了字典或者类字典,相当于 Django 原始 request 对象中的 request.GET。

2.响应时可以统一返回 Response 类的对象。传入原始的响应数据,会自动根据客户的请求头中 Accept 将响应数据转换为对应的格式进行返回,默认返回 json,仅支持 json 和 html。

3.异常处理:如果视图中抛出了未处理异常,DRF 框架会自动对异常进行处理,并且把处理之后的错误信息返回给客户端。

4.高级功能:认证、权限和限流

3.uwsgi 和 gunicorn 的区别?

说实话,我只是会使用,具体的原理或者底层没有看过,所以此处只进行简单的介绍,后期熟悉之后补充相关的内容。

uwsgi:

1.Django 的程序通常使用 uwsgi 服务器来运行

2.需要安装后,编写配置文件,然后设置 Nginx 配置文件让其将请求转发给 uwsgi 服务器。

gunicorn:

1.Gunicorn(绿色独角兽)是一个 Python WSGI 的 HTTP 服务器

2.从 Ruby 的独角兽(Unicorn )项目移植

3.该 Gunicorn 服务器与各种 Web 框架兼容,实现非常简单,轻量级的资源消耗

4.Gunicorn 直接用命令启动,不需要编写配置文件


ES

1.Elasticsearch 是怎么样的数据库,数据是如何存储的?

答:Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式。索引相当于关系型数据库中的数据库,类型对应关系型数据库中的表,文档对应关系型数据库中的记录

2.项目中是如何向其中添加数据的?

答:在项目中首先使用 Haystack 模块对接 Elasticsearch 引擎。然后需要配置文件(比如 Elasticsearch 运行服务器的 ip 和端口,指定 Elasticsearch 建立的索引库的名称,然后设置当添加、修改、删除数据的时候自动生成索引)。下一步就是创建索引类,来指明让搜索引擎对哪些字段建立索引,也就是可以通过哪些字段的关键字来检索数据。在 REST framework中,索引类的字段会作为查询结果返回数据的来源。

手动的执行如下命令生成初始索引:

  1. python manage.py rebuild_index

还需要创建序列化器,最后再创建视图和路由,视图继承自:

  1. drf_haystack.viewsets.HaystackViewSet
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
6天前
|
API 数据库 数据安全/隐私保护
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】Django REST framework (DRF) 是用于构建Web API的强力工具,尤其适合Django应用。本文深入讨论DRF面试常见问题,包括视图、序列化、路由、权限控制、分页过滤排序及错误处理。同时,强调了易错点如序列化器验证、权限认证配置、API版本管理、性能优化和响应格式统一,并提供实战代码示例。了解这些知识点有助于在Python面试中展现优秀的Web服务开发能力。
22 1
|
4天前
|
前端开发 测试技术 C++
Python自动化测试面试:unittest、pytest与Selenium详解
【4月更文挑战第19天】本文聚焦Python自动化测试面试,重点讨论unittest、pytest和Selenium三大框架。unittest涉及断言、TestSuite和覆盖率报告;易错点包括测试代码冗余和异常处理。pytest涵盖fixtures、参数化测试和插件系统,要注意避免过度依赖unittest特性。Selenium的核心是WebDriver操作、等待策略和测试报告生成,强调智能等待和元素定位策略。掌握这些关键点将有助于提升面试表现。
19 0
|
4天前
|
数据采集 存储 JSON
Python爬虫面试:requests、BeautifulSoup与Scrapy详解
【4月更文挑战第19天】本文聚焦于Python爬虫面试中的核心库——requests、BeautifulSoup和Scrapy。讲解了它们的常见问题、易错点及应对策略。对于requests,强调了异常处理、代理设置和请求重试;BeautifulSoup部分提到选择器使用、动态内容处理和解析效率优化;而Scrapy则关注项目架构、数据存储和分布式爬虫。通过实例代码,帮助读者深化理解并提升面试表现。
13 0
|
6天前
|
SQL 中间件 API
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】**Flask是Python的轻量级Web框架,以其简洁API和强大扩展性受欢迎。本文深入探讨了面试中关于Flask的常见问题,包括路由、Jinja2模板、数据库操作、中间件和错误处理。同时,提到了易错点,如路由冲突、模板安全、SQL注入,以及请求上下文管理。通过实例代码展示了如何创建和管理数据库、使用表单以及处理请求。掌握这些知识将有助于在面试中展现Flask技能。**
12 1
Flask框架在Python面试中的应用与实战
|
7天前
|
数据可视化 Python
Python模型评估与选择:面试必备知识点
【4月更文挑战第17天】本文深入探讨了Python模型评估与选择在面试中的关键点,包括性能度量、过拟合与欠拟合识别、模型比较与选择、模型融合和偏差-方差权衡。强调了避免混淆评估指标、忽视模型验证和盲目追求高复杂度模型的常见错误,并提供相关代码示例,如交叉验证、网格搜索和超参数调优。通过理解这些概念和技巧,可在面试中展示出色的数据科学能力。
31 12
|
7天前
|
机器学习/深度学习 搜索推荐 Python
Python特征工程面试:从理论到实践
【4月更文挑战第17天】本文探讨了Python在数据科学面试中的特征工程,涵盖基础概念如特征选择和提取,实战技能如缺失值和异常值处理,以及特定场景应用。强调避免过度依赖单一方法,忽视数据分布和相关性,以及保持特征工程的可解释性。提供代码示例展示了处理缺失值、标准化、特征选择和异常值检测的基本操作。建议结合业务理解,灵活运用多种方法并注重模型解释性。
21 9
|
7天前
|
数据采集 机器学习/深度学习 数据挖掘
Python数据清洗与预处理面试题解析
【4月更文挑战第17天】本文介绍了Python数据清洗与预处理在面试中的常见问题,包括Pandas基础操作、异常值处理和特征工程。通过示例代码展示了数据读取、筛选、合并、分组统计、离群点检测、缺失值和重复值处理、特征缩放、编码、转换和降维。强调了易错点,如忽视数据质量检查、盲目处理数据、数据隐私保护、过度简化特征关系和忽视模型输入要求。掌握这些技能和策略将有助于在面试中脱颖而出。
23 8
|
7天前
|
缓存 自然语言处理 数据处理
Python自然语言处理面试:NLTK、SpaCy与Hugging Face库详解
【4月更文挑战第16天】本文介绍了Python NLP面试中NLTK、SpaCy和Hugging Face库的常见问题和易错点。通过示例代码展示了如何进行分词、词性标注、命名实体识别、相似度计算、依存关系分析、文本分类及预训练模型调用等任务。重点强调了理解库功能、预处理、模型选择、性能优化和模型解释性的重要性,帮助面试者提升NLP技术展示。
24 5
|
7天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
129 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
7天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
28 6