python web后端,笔试面试题四

本文参考自: 原文地址



1.以下不能创建一个字典的语句是?
A、dict={} 
B、dict2={3:5}
C、dict3={[1,2,3]:"uestc"}----答案
D、dict4={(1,2,3):"uestc"}


2.下列代码的运行结果是多少? 
class Person:
def __init__ (self):
pass
def getAge(self):
print __name__
p=Person()
p.getAge

A、Person
B、getAge
C、usr.lib.python.person 
D、__main__-----答案
E、Anexception is thrown
 
3.下列代码运行结果
a=['hello',[1,2,3]]
b=a[:]
a[0]='world'
a[1].append(4)
print(b)


# 列表 a中有两个元素 'hello'(字符串)和【1,2,3,4】 列表
# 列表 b拷贝了  列表 a ,列表b中也有两个元素  'hello'(字符串)和【1,2,3,4】 列表
# 现在 a,b 中 的元素 的内存地址 是一样的
# 列表 a,b 是两个 对象,这两个 对象 的数据类型是 列表,有自己的  内存地址
# 列表中的 两个元素 也是 对象  有自己的 数据类型,分别是 字符串  和 列表 ,也就是自己的 内存地址
不可变数据:Number(数字)、String(字符串)、Tuple(元组); 
可变数据:List(列表)、Dictionary(字典)、Set(集合)。
字符串不可变,所以答案不是D
A、['hello',[1,2,3]] 
B、['hello',[1,2,3,4]] -----答案
C、['world',[1,2,3]]
D、['world',[1,2,3,4]]


二,判断、填空 
 
4.已知x=3,那么赋值语句x='abcedfg'是无法正常执行的?()
---可以执行


5.Python变量名区分大小写,所以student和Student不是同一个变量。()



6.aList的值为[3,4,5,6,7,9,11,13,15,17],那么切片aList[3:7]得到的值是______
[6, 7, 9, 11]


7.表达式list(map(str,[1,2,3]))的值为_____
['1', '2', '3']




三,简述(口答)


8.什么是lambda函数?它有什么好处?
1. 不需要定义函数名称(临时函数)
2. 只做简单运算,并返回值,没有复杂的函数体


9.Django对数据查询结果排序怎么做,降序怎么做,查询大于某个字段怎么做?



10.下面这些是什么意思:@classmethod,@staticmethod,@property?
类方法的实现方式
静态方法的实现方式
@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性。


11.简单谈下GIL


12.Python和多线程(multi-threading),这是个好主意码?列举一些让Python代码以并行方式运行的方法,以及多进程中传递参数的方式.


13. MYSQL数据库优化的思路
1.优化索引、SQL 语句、分析慢查询;
2.设计表的时候严格根据数据库的设计范式来设计数据库;
3.使用缓存,把经常访问到的数据而且不需要经常变化的数据放在缓存中,能节约磁盘 IO
4.优化硬件;采用 SSD,使用磁盘队列技术(RAID0,RAID1,RDID5)等
5.采用 MySQL 内部自带的表分区技术,把数据分层不同的文件,能够提高磁盘的读取效率; 6.垂直分表;把一些不经常读的数据放在一张表里,节约磁盘 I/O;
7.主从分离读写;采用主从复制把数据库的读操作和写入操作分离开来;
8.分库分表分机器(数据量特别大),主要的的原理就是数据路由;
9.选择合适的表引擎,参数上的优化
10.进行架构级别的缓存,静态化和分布式;
11.不采用全文索引;
12.采用更快的存储方式,例如 NoSQL 存储经常访问的数据**。


14. MYSQL锁有几种;死锁是怎么产生的;

15.Django本身提供了runserver,为什么不能用来部署?


runserver方法是调试 Django时经常用到的运行方式,它使用 Django自带的
WSGI Server运行,主要在测试和开发中便用,并且 conserver开启的方式也是单进程
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。注意uwsgi是一种通信协议,而WSGI是实现uwsgi协议和WSGI协议的Web服务器。 WSGI具有超快的性能、低内存占用和多app管理等优点,井且搭配着Nginx
就是一个生产环境了,能够将用户访问请求与应用app隔离开,实现真正的部署,相比来讲,支持的并发量更高,方使管理多进程,发挥多核的优势,提升性能。


16.进程通信的方式有几种?
进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。
IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。


17. TCP UDP区别:三次握手四次挥手


UDP 是面向无连接的通讯协议,UDP 数据包括目的端口号和源端口号信息。
优点:UDP 速度快、操作简单、要求系统资源较少,由于通讯不需要连接,可以实现广播发送
缺点:UDP 传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数 据是否会正确接收,也不重复发送,不可靠。


TCP 是面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次挥手
优点:TCP 在数据传递时,有确认、窗口、重传、阻塞等控制机制,能保证数据正确性,较为可靠。
缺点:TCP 相对于 UDP 速度慢一点,要求系统资源较多。




四,代码填(可以写代码)
18.补充缺失的代码
def print directory contents(spath)
"""
这个函数接受文件夹的名称作为输入参数
返回该文件夹中文件的路径
以及其包含文件夹中文件的路径。
"""
补充代码
import os
import sys


def print_files(path):
    lsdir = os.listdir(path)
    dirs = [i for i in lsdir if os.path.isdir(os.path.join(path,i))]
    files = [i for i in lsdir if os.path.isfile(os.path.join(path,i))]
    if files:
        for f in files:
            print os.path.join(path,f)
    if dirs:
        for d in dirs:
            print_files(os.path.join(path,d))


print_files(sys.argv[1])


19.给定一个包含n个整数的数组nums和一个目标值target,判断nums中是否存在四个元素a,b,c和d,使得a+b+c+d的值与target相等?找出所有满足条件且不重复的四元组
注意:答案中不可以包含重复的四元组。
示例
给定数组nums=[1,0,-1,0,-2,2],和 target=0
满足要求的四元组集合为
{[-1,0,0,1],
[-2,-1,1,2],
[2,0,0,2],
[-2,0,0,2]}
 
from itertools import combinations


def test(array,target):
    result=[]
    combins = [c for c in combinations(array,4)]
    for each_array in combins:
        if sum(each_array)==target:
            result.append(each_array)
            # continue
    return result
if __name__ == '__main__':
    res = test([1,0,0,-1,-2,2],0)
    print(res)

猜你喜欢

转载自blog.csdn.net/running987/article/details/81411412