Baobao$

博客园 首页 新随笔 联系 订阅 管理

第一部分python基础篇

1.为什么学习Python?

 

2.通过什么途径学习的Python?

3.Python和Java、PHP、C、C#、C++等其他语言的对比?

4.简述解释型和编译型编程语言?

        编译器:是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快

        解释器:只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的

        这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)

5.Python解释器种类以及特点?

       CPython : 

       IPython : 

       pypy :

       Jython : 

       IronPython : 

6.位和字节的关系? 

           1byte = 8bit

7.b、B、KB、MB、GB 的关系?

8.请至少列举5个 PEP8 规范(越多越好)。

9.通过代码实现如下转换:

   二进制转换成十进制:v = “0b1111011”

   十进制转换成二进制:v = 18
 
   八进制转换成十进制:v = “011”
 
  十进制转换成八进制:v = 30
 
  十六进制转换成十进制:v = “0x12”
 
  十进制转换成十六进制:v = 87

10.请编写一个函数实现将IP地址转换成一个整数。

     如 10.3.9.12 转换规则为:
             10            00001010
              3            00000011

              9            00001001
            12            00001100

     再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?

11.python递归的最大层数?

             1000

12.求结果:
    v1 = 1 or 3                       # 1
    v2 = 1 and 3                    # 3
    v3 = 0 and 2 and 1          # 0

    v4 = 0 and 2 or 1             # 1

    v5 = 0 and 2 or 1 or 4     #  1

    v6 = 0 or Flase and 1     #Flase

13.ascii、unicode、utf-8、gbk 区别?

14.字节码和机器码的区别?

15.三元运算规则以及应用场景?

16.列举 Python2和Python3的区别?

17.用一行代码实现数值交换:
     
 a = 1
 
     b = 2

18.Python3和Python2中 int 和 long的区别?

19.xrange和range的区别?

20.文件操作时:xreadlines和readlines的区别?

21.列举布尔值为False的常见值?

22.字符串、列表、元组、字典每个常用的5个方法?

23.lambda表达式格式以及应用场景?

24.pass的作用?

25.*arg和**kwarg作用

26.is和==的区别

27.简述Python的深浅拷贝以及应用场景?

28.Python垃圾回收机制?

29.Python的可变类型和不可变类型?

30.求结果:

   v = dict.fromkeys(['k1','k2'],[])
 
   v[‘k1’].append(666)

   print(v)

   v[‘k1’] = 777

   print(v)

31.求结果:

32.列举常见的内置函数?

33.filter、map、reduce的作用?

34.一行代码实现9*9乘法表

35.如何安装第三方模块?以及用过哪些第三方模块?

36.至少列举8个常用模块都有那些?

37.re的match和search区别?

38.什么是正则的贪婪匹配?

39.求结果:
 a. [ i % 2 for i in range(10) ]
 b. ( i % 2 for i in range(10) )

40.求结果:
 a. 1 or 2
 b. 1 and 2
 c. 1 < (2==2)
 d. 1 < 2 == 2

41.def func(a,b=[]) 这种写法有什么坑?

42.如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ?

43.如何实现[‘1’,’2’,’3’]变成[1,2,3] ?

44.比较: a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?

45.如何用一行代码生成[1,4,9,16,25,36,49,64,81,100] ?

46.一行代码实现删除列表中重复的值 ?

47.如何在函数中设置一个全局变量 ?

48.logging模块的作用?以及应用场景?

49.请用代码简答实现stack 。

50.常用字符串格式化哪几种?

51.简述 生成器、迭代器、可迭代对象 以及应用场景?

52.用Python实现一个二分查找的函数。

53.谈谈你对闭包的理解?

54.os和sys模块的作用?

55.如何生成一个随机数?

56.如何使用python删除一个文件?

57.谈谈你对面向对象的理解?

58.Python面向对象中的继承有什么特点?

59.面向对象深度优先和广度优先是什么?

60.面向对象中super的作用?

61.是否使用过functools中的函数?其作用是什么?

62.列举面向对象中带爽下划线的特殊方法,如:__new__、__init__

63.如何判断是函数还是方法?

64.静态方法和类方法区别?

65.列举面向对象中的特殊成员以及应用场景

66.1、2、3、4、5 能组成多少个互不相同且无重复的三位数

67.什么是反射?以及应用场景?

68.metaclass作用?以及应用场景?

69.用尽量多的方法实现单例模式。

70.装饰器的写法以及应用场景。

71.异常处理写法以及如何主动跑出异常(应用场景)

72.什么是面向对象的mro

73.isinstance作用以及应用场景?

74.写代码并实现:
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would 
have exactly one solution, and you may not use the same element twice.
Example:

          Given nums = [2, 7, 11, 15], target = 9,
           
Because nums[0] + nums[1] = 2 + 7 = 9,

           return [0, 1]

75.json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型?

76.json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?

77.什么是断言?应用场景?

78.有用过with statement吗?它的好处是什么?

79.使用代码实现查看列举目录下的所有文件。

80.简述 yield和yield from关键字。

第二部分 网络编程和并发

1.简述 OSI 七层协议。

       osi七层模型:
                      应用层          python代码  http https ftp smtp...
                      socket
                      传输层            port tcp/udp协议               四层交换机 四层路由器
                       网络层           ip协议                                三层路由器 三层交换机
                      数据链路层     mac地址 arp协议              网卡 二层交换机
                      物理层

2.什么是C/S和B/S架构?     

       CS架构   客户端和服务端  (硬件:京东,淘宝,qq,微信,) (硬件:打印机)

                           client: 客户端      享受服务端提供服务

                   server: 服务端    给客户提供给服务

            B/S架构   浏览器和服务端 (chrom,火狐,360,sogou,IE)

                      brower: 浏览器     (所有的B/S架构也是C/S架构    web编程 都是B/S架构的)

       

3.简述 三次握手、四次挥手的流程。

4.什么是arp协议?

            1.这是一个通过ip找mac地址的协议
       2.由于有了socket,用户在使用网络的时候,只需要关心对方用户的ip地址就可以了
       3.如果用户即将和这个ip进行通信,那么还需要知道它的mac地址
       4.这个时候就需要由你的机器发起一个arp请求
       5.由交换机进行广播
       6.对应的机器会回应这个arp请求
       7.通过交换机单播发给你的机器

5.TCP和UDP的区别?

            1.tcp
                面向连接的可靠的流式传输 适合传输比较大的文件,
                对稳定性要求比较高的
                扩展的说 为什么 可靠?
       2.udp
               无连接的 快速 但不可靠
               适合传输对效率要求比较高的短消息

6.什么是局域网和广域网?

            局域网: 局域网可以是独立封闭运行的,也可以是和外网相连接的

            广域网:地域跨度非常大的网络集合,由无数个局域网+独立服务器构成的 此处所说的局域网既可以是小型的广域网,也可以   是局域网。

7.为何基于tcp协议的通信比基于udp协议的通信更可靠?

                tcp
                      大量的连续的数据 传递文件\发送邮件
                       文件的传递
                       下载电影
                 udp
                       短消息类 社交软件
                        qq 微信
                        在线播放视频 快会丢帧

8.什么是socket?简述基于tcp协议的套接字通信流程。

             什么是socket? 网络协议的大接口,帮助我们完成网络传输过程中的osi4层以及一下信息的封装
    tcp协议 : 要先建立连接 占线 用socketserver解决
    udp协议: 不需要建立连接 且可同时和多个客户端进行交互

      socketserver 实现了并发的socket tcp server

9.什么是粘包? socket 中造成粘包的原因是什么? 哪些情况会发生粘包现象?

           黏包现象 :
                        黏包现象怎么产生的
           首先,我们发出的信息不是立即通过网络传送到另一端
           而是我们发到操作系统的缓存中,
                        tcp协议首先流式传输无边界,第二是可靠所以每一条数据都有回执
                        那么为了节省网络上延迟的时间
                        连续发送出的多个短信息就会黏在一起
                        由发送端的缓存发送除去,所以接收到的就是黏在一起的数据了
                        发送端发送的消息也不是直接发送到对面的应用中
                        而是发到了对方操作系统的缓存中
                        如果连续发送的数据在对方的缓存中没有被及时取走
                        那么也会发生黏包现象
         如何解决黏包
                        自定义协议
                        先发送即将发送数据的长度,然后再发送数据
                        先接收数据的长度,再根据接收的长度接收数据
                       用到了struct模块,来控制第一次发送数据长度的这条信息的长度

10.IO多路复用的作用?

             操作系统提供的代理,监听网络对象的IO操作

            常见的IO多路复用机制 :
                             select 轮询的方式获取每个对象的状态
                              poll   底层数据结构与select不同,能够存储更多的对象,轮询的方式..
                             epoll  不采用轮询的方式来获取每个对象的状态,而是才用回调函数的方式
                                         所以在wait for data阶段 一收到数据就可以立即通知应用程序
                                         提高了效率,也减轻了操作系统的负担

11.什么是防火墙以及作用?

12.select、poll、epoll 模型的区别?

13.简述 进程、线程、协程的区别 以及应用场景?

            什么是进程
                          就是为了形容执行中的程序的一种称呼
                          它是操作系统中资源分配的最小单位
                          进程之间是数据隔离的,占用操作系统资源相对多
                          独立存在的

            什么是线程
                         轻量级进程,直接被CPU调度,不能独立存在的轻量级进程
                         同一进程中的多个线程之间数据共享

           什么是协程?
                          协程是用户级的,对操作系统不可见
                          是用户为了提高一条线程对CPU的利用率才出现的概念
                           协程能够实现在一条线程上的多个任务互相切换
                           为了提高工作效率,用户可以控制协程在一个任务中遇到IO就切换另一个任务

14.GIL锁是什么鬼?

               全局解释器锁,是用来锁线程的,Cpython解释器提供的
               导致了同一时刻只能有一个线程访问CPU
               这个GIL是一个历史遗留问题

15.Python中如何使用线程池和进程池?

16.threading.local的作用?

17.进程之间如何进行通信?

18.什么是并发和并行?

           并行是特殊的并发

           并发:
                   宏观上是在同时运行的
                   微观上是一个一个顺序执行的
                    同一时刻只有一个cpu在工作
           并行:
                    微观上就是同时执行的
                    同一时刻不止有一个cpu在工作

19.进程锁和线程锁的作用?

 

20.解释什么是异步非阻塞?            

                 异步:
                          一个任务的执行不需要等待另一个任务的结束
                          start\terminate
                非阻塞:
                            没有阻塞
                            socket对象调用setblocking(False)
                            什么是协程?

21.路由器和交换机的区别?

 

posted on 2018-12-16 18:31  Baobao$  阅读(188)  评论(0编辑  收藏  举报