Python面试题二

1.大数据的文件读取

  1. 利用生成器(generator)
  2. 迭代器进行迭代遍历: for line in file

2.find 和grep

grep命令是一种强大的文本搜索工具,grep搜索内容串可以是正则表达式,允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。

find通常用来在特定目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。

3.线上服务可能因为种种原因导致挂掉怎木办?

Linux下的后台管理器supervisor

每次修改文件后再Linux执行service supervisord restart

4.如何提高python的运行效率

  1. 使用生成器
  2. 针对循环的优化(尽量避免再循环中访问变量的属性)
  3. 关键代码使用外部功能包(Cpython、 pylnlne、pypy、pyrex)

5.常用的Linux命令

ls:
help:
cd:变换目录
more:一页一页的显示
clear:
mkdir:
pwd:显示当前目录
rm:
grep:
find:
mv:
su:
date:显示日期
cat:显示内容
which 寻找【执行挡】
whereis: 寻找特定档案

6.Python是如何进行内存管理的

1.垃圾回收。当内存中有不在使用的部分。垃圾收集器(还有循环垃圾回收器。)就会将他们清理。(即检测引用计数为0)

2.引用计数(释放内存):利用引用计数来保持和追踪内存中的对象,当引用计数为0或者到达阈值时,就会被垃圾机制回收。

3.内存池(用于管理对小块内存的申请和释放,可以减少内存碎片)机制:Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池,而不是返回给操作系统。

7.常见的排序

冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序

 

Web部分:

1.django中的当一个用户登录A服务器(进入登录状态),然后下次请求被nginx代理到B服务器会出现什么影响?

如果用户在A应用服务器登录的session数据没有共享到B服务器,那么之前的登录状态就会不存在。

2.跨域请求问题怎木解决?

同源:如果两个页面的协议、端口和域名都相同,则两个页面具有相同的源。

同源策略:基于安全的原因,阻止从一个源加载的文本或者脚本获取或设置另一个源加载的文档的属性(即不允许访问非同源的页面)。

ajax:一种用于创建快速动态网页的技术。(即在不重载整个网页的情况下,秩序要与服务器进行少量的数据交换,能够实现更新部分网页)

跨越请求方式:

JSONP(json是一种轻量级的数据传输格式,广泛应用于当前的web中):利用sript标签绕过通关策略,获取一个类似这样的数据。ajax中的callbacks本质是(伪装成srcipt标src属性发送请求的方式)发送一个回调方法,参数data就是想要带到的json数据‘

cors(cross—origin Resource Sharing):使用自定义的HTTP头部允许浏览器和服务器户型了解对方,从而决定请求和响应成功与否。(一种实现方式是修改views.py中对应的函数,给他的响应头部添加Access-control-Allow-origin允许其他域通过Ajax.)

cors 和jsonp对比:

1.jsonp只能实现get请求,而cors可以支持所有类型的HTTp请求。

2.使用cors比jsonp有更好的错误请求。

3.jsonp主要被老版本浏览器支持,而绝大数的现代浏览器都支持cors。

 

3.Django框架

django框架遵循mvc设计,并且有个专用的名词:mvt
ORM框架:采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。

M:负责数据处理,内嵌了orm框架

v: 接受HTTPRequest,业务出路返回HttpResponse

T:负责封装构造要返回的html,内嵌了模板引擎。

4.django对数据查询结果排序。

排序:order

降序需要在排序字段名前加-

查询大于某值:filter(字段名_gt = 值)

5.Django

  1. django是走大而全的方向,最出名的是全自动的管理后台。只需要使用起ORM,做简单的对象定义,他就能自动生成数据库结构、以及全功能的管理后台。
  2. django内置的ORM跟框架内的其他模块耦合程度高。
  3. django具有超高的开发效率,但是其性能有限,采用django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能要求。
  4. django适合中小型网站。或作为大型网站的雏形。
  5. django的模板设计哲学是将代码和样式分离,从根本上杜绝在模板中进行编码、和处理数据的可能性。

 

6.Django重定向以及其状态码

重定向:

通过各种方法将各种网络请求重新定个方向转到其他位置(如网页重定向、域名重定向、路由选择变化)。

重定向的情况:

  1. 网站的调整
  2. 网站被移到一个新的地址
  3. 网站扩展名改变

转化和重定向区别:

  • 转发使用的时getREquestDIspatcher()方法;重定向使用的是sendRedirect();
  • 转发:浏览器的url地址栏不变。 重定向:浏览器的地址栏改变
  • 转发是服务器行为,重定向是客户端行为。
  • 转发是浏览器制作了一次访问请求, 重定向是浏览器至少连词访问请求。
  • 转发2次跳转直接按传输的信息不会丢失,重定向2次跳转之间传输信息会丢失。

django重定向:当视图函数处理完成一个逻辑后,不需要向客户端呈现数据,而且转回到其他页面(即调用其他的视图函数,而不是直接返回模板html)。

使用HttpResponseRedirect对象实现重定向功能。

状态码:302(暂时性转移)、301(永久性转移)

7.django本身提供runserver,为什么不能用来部署。

runserver方法是调试Django时经常用到的运行方式,它使用django自带WSGI server运行,主要在测试和开发中使用,并且runserver开启的方法也是单线程。

 

网络编程和前端部分

1.AJAX是什么,如何使用AJAX?

Ajax(异步的javascript 和 xml)能够刷新局部网页数据而不是重新加载网页。

1:创建xmlhttprequest对象,var xmlhttp = new XMLHttprequest();XMlHttpRequest对象用来和服务器交换数据。

2:使用xmlhttprequest对象的open()和send()方法发送资源请求给服务器

3:使用xmlhttprequest对象的requestText或responseXMl属性获得服务器的响应。

4: onreadystatechange函数,当发送请求到服务器,我们想要服务器响应执行一些功能就像使用onreadystatechange函数,每次xmlhttprequest对象的readyState发生改变都会变得触发onreadstatechange函数。

 

2.状态码:

1XX(临时响应):

2XX(成功):

3XX(重定向):

305使用代理

307重定向

4XX(请求错误):

401未授权

403禁止访问

404未找到

408请求超时

5XX(服务器错误):

500服务器内部错误

503服务不可用

504网关超时

3.get和Post区别

get请求:请求数据会附加在url之后,以?分割URL和传输数据,多个参数用&连接。请求数据会暴露在地址栏。并且传输数据会受到URL长度的影响。

Post请求:Post请求会把请求的数据放置在HTTP请求包的包体中。请求数据不会暴露在地址栏。应为不是URL传值,理论对提交数据无限制。实际上服务器会限制提交数据的大小。

4.cookies和session区别:

  1. cookies数据存放在客户的浏览器上,session数据放在服务器上。
  2. cookies不安全,别人可以根据分析在本地的cookie并进行cookie欺骗。考虑到安全应使用session
  3. session会在一定时间保存在服务器上,当访问增多,会占用服务器的性能,考虑到减轻服务器性能方面,应当使用cookie
  4. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

建议:将登陆信息等重要信息存放在session,其他信息保存在cookies

5.创建一个简单tcp服务器都需要的流程

1.socket创建一个套接字

2.bind绑定ip和端口

3.listen使套接字变成被动链接。

4.accept等待客户端的链接

5.recv/send接收发送数据。

 

数据库部分:

1.常用的数据库引擎有哪些,他们之间的关系。

MyISAM:默认引擎,不支持外键、不支持事务、适合查询以及插入为主的应用、

InnoDB:适合频繁修改和涉及到安全性高的应用。支持事务(出错回滚),支持外键、支持行锁、不支持Fultext类型的索引、不保存表的行数清除表时,效率低。

2.关联查询:

将多个表联合起来进行查询。主要有内查询,左连接、右链接、外链接

3.数据库的优化

1.优化索引、Sql语句、分析慢查询

2.设计表时严格按照数据库的设计范式要求来设计。

3.使用缓存,把经常访问到的数据库且不需要经常变化数放到缓存中,能节约磁盘IO

4.优化硬件:采用ssd,使用磁盘队列技术

5.选择合适的表引擎,参数上的优化

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值