python技术面试题(二十三)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
24天前
|
数据可视化 图形学 Python
在圆的外面画一个正方形:Python实现与技术解析
本文介绍了如何使用Python的`matplotlib`库绘制一个圆,并在其外部绘制一个正方形。通过计算正方形的边长和顶点坐标,实现了圆和正方形的精确对齐。代码示例详细展示了绘制过程,适合初学者学习和实践。
38 9
|
20天前
|
数据可视化 数据处理 Python
Python编程中的数据可视化技术
在Python编程中,数据可视化是一项强大的工具,它能够将复杂的数据集转化为易于理解的图形。本文将介绍如何使用matplotlib和pandas这两个流行的Python库来实现数据可视化,并展示一些实用的代码示例。通过这些示例,读者将学会如何创建各种图表,包括折线图、柱状图和散点图等,以便更好地理解和呈现数据。
|
27天前
|
存储 数据挖掘 数据处理
Python中的计票技术
本文介绍了如何使用 Python 进行计票,包括使用字典、`collections.Counter` 和 `pandas` 等方法。通过多个示例详细展示了每种方法的具体应用,帮助读者掌握计票技巧。
28 1
|
29天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
80 2
|
1月前
|
算法 Python
Python图论探索:从理论到实践,DFS与BFS遍历技巧让你秒变技术大牛
图论在数据结构与算法中占据重要地位,应用广泛。本文通过Python代码实现深度优先搜索(DFS)和广度优先搜索(BFS),帮助读者掌握图的遍历技巧。DFS沿路径深入搜索,BFS逐层向外扩展,两者各具优势。掌握这些技巧,为解决复杂问题打下坚实基础。
35 2
|
1月前
|
开发框架 开发者 Python
探索Python中的装饰器:技术感悟与实践
【10月更文挑战第31天】 在编程世界中,装饰器是Python中一种强大的工具,它允许我们在不修改函数代码的情况下增强函数的功能。本文将通过浅显易懂的方式,带你了解装饰器的概念、实现原理及其在实际开发中的应用。我们将一起探索如何利用装饰器简化代码、提高可读性和复用性,同时也会分享一些个人的技术感悟,帮助你更好地掌握这项技术。
33 2
|
1月前
|
数据采集 Web App开发 iOS开发
如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?
本文介绍了使用 Python 爬虫技术获取淘宝天猫商品价格信息的两种方法。方法一使用 Selenium 模拟浏览器操作,通过定位页面元素获取价格;方法二使用 Requests 和正则表达式直接请求页面内容并提取价格。每种方法都有详细步骤和代码示例,但需注意反爬措施和法律法规。
|
18天前
|
数据采集 API 定位技术
Python技术进阶:动态代理IP的跨境电商解决方案
Python技术进阶:动态代理IP的跨境电商解决方案
|
1月前
|
数据采集 存储 Web App开发
利用Python 的爬虫技术淘宝天猫销量和库存
使用 Python 爬虫技术获取淘宝天猫商品销量和库存的步骤包括:1. 安装 Python 和相关库(如 selenium、pandas),下载浏览器驱动;2. 使用 selenium 登录淘宝或天猫;3. 访问商品页面,分析网页结构,提取销量和库存信息;4. 处理和存储数据。注意网页结构可能变化,需遵守法律法规。
|
25天前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
68 0