前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python技术面试题(二十三)

python技术面试题(二十三)

作者头像
小闫同学啊
发布2019-07-18 16:25:01
1.1K0
发布2019-07-18 16:25:01
举报
文章被收录于专栏:小闫笔记小闫笔记

正文共:3320 字 9 图 预计阅读时间:9 分钟

每日分享

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

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

小闫语录:

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

Unix

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

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

代码语言:javascript
复制
tail -n file

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

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

代码语言:javascript
复制
crontab -l

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

代码语言:javascript
复制
screen -S <name>
vim test

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

查询所有会话使用:

代码语言:javascript
复制
screen -ls

暂时离开当前 session 使用:

代码语言:javascript
复制
Crtl + a +d

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

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

代码语言:javascript
复制
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 仓库的状态:

代码语言:javascript
复制
git status

2.什么时候使用 git stash

代码语言:javascript
复制
暂存

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

代码语言:javascript
复制
# 删除文件
  rm 文件名
  # git确定删除文件,对比添加文件git add
  git rm 文件名
  # 删除后记录删除操作版本
  git commit -m '删除描述'

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

代码语言:javascript
复制
git checkout -b dev

5.将分支推送到远程:

代码语言:javascript
复制
git push -u origin dev

6.在本地打标签:

代码语言:javascript
复制
git tag -a 标签名 -m '标签描述'

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

代码语言:javascript
复制
git push origin 标签名

Python 基础知识

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

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

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

比如下面的例子:

代码语言:javascript
复制
with open('test', 'w') as f:
    f.write('欢迎关注 小闫笔记 ')

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

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

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

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

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

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

代码语言:javascript
复制
class email(objec):
    def __enter__(self):
        pass

    def __exit__(self):
        pass

使用的时候:

代码语言:javascript
复制
with email():

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

3.如下代码输出什么?

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

输出的结果为 2。

web 框架

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

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

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

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

代码语言:javascript
复制
模型.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中,索引类的字段会作为查询结果返回数据的来源。

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

代码语言:javascript
复制
python manage.py rebuild_index

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

代码语言:javascript
复制
drf_haystack.viewsets.HaystackViewSet

优质文章推荐:

redis操作命令总结

MySQL相关操作

SQL查询语句

前端中那些让你头疼的英文单词

Flask框架重点知识总结回顾

团队开发注意事项

浅谈密码加密

Django框架中的英文单词

Django中数据库的相关操作

DRF框架中的英文单词

DRF框架

Django相关知识点回顾

python技术面试题-腾讯

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈技术精选 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 每日分享
  • Unix
  • git
  • Python 基础知识
  • web 框架
  • ES
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档