20190806_python基础笔记

目录


面试重点总结

面试中可能会遇到的题目

一、面试重点总结

线程,进程,IO
中间件本质
关系数据库
web界面开发,Django源码
数据分析:工具应用熟练,数学理论熟悉
函数封装
面向对象
难点:装饰器
数据库原理,网络原理,操作系统原理,数据结构和算法(bat)
求10万以内质数,判断某个数是否为质数,求斐波那契数列第101项或者前都少项(递归,生成器,循环),打印菱形

二、面试中可能会遇到的题目

1.动态语言的内存管理:

什么是垃圾回收GC?面向对象编程在内存管理方面的优势和劣势?
在程序运行时某一些对象的引用计数(sys.getrefcount(x))可能为0,这些对象会被打上标记,说明为空,这些对象,所占用的碎片化内存,会被整理成连续的内存空间以便后续使用,这个过程叫做垃圾回收。但是垃圾回收时内存不能使用,所以需要在空闲时间整理内存,也不需要频繁整理,看实际需要。
引用计数增加的方式:
    对象赋值给其他变量例如:x = [1,2] y = x  列表的引用计数加
    函数调用 foo(x)  调用时增加一次,调用完成,恢复原来的次数
引用计数减少的方式:
    函数运行结束时,局部变量会被自动消除,引用计数减少
    变量赋值给其他对象 x = 3 x = 4, 3的引用计数少一次
另外, 字面常量的引用计数不容易判断

2.元编程

可能是会拉开差距的面试题

3.计算机5大组成部分及各部分的功能

4.python语言的特点

三、计算机基础知识

1.冯诺伊曼体系

  • 计算机5大部分:输入设备,输出设备,内存,cup(包括运算器,和控制器, 寄存器,缓存器)
  • cup:做所有运算,并通过控制器来控制内存,输入输出设备
  • 内存:作为cup和IO之间的桥梁,数据需要从IO设备加载到内存,才能被
    cup使用
  • 内存的特点:断电易失
  • 寄存器:用来暂时存放内存中的数据,速度和cup一样快
  • 多级缓存:用来存放内存中的数据,级数越高速度越慢,存储空间越大
  • 数据流向:IO设备到内存再到cup
  • 计算机中可以存数据的结构:IO设备,内存,cup中还有寄存器和缓存器
  • 个各结构的运算速度:cup >> 内存 >> IO设备

2.解释性语言和汇编语言

  • 解释性语言工作流程:源代码被解释器翻译成Bytecode,然后在虚拟机上运行(如pvm),转换成机器语言

  • 编译语言工作原理:源代码被编译器,直接编译成机器语言

  • 非结构化:多个入口多个出口

  • 结构化:一个入口一个出口

  • Python是多范式的面向对象,结构化,函数式编程

四、python基础知识及练习

1.进制

0xa 十六进制
0b1 二进制
0o7 八进制
  • 10 进制到 其他进制 用除法取余数

  • 其他进制转10进制 对应位置累乘

  • 2进制以1结尾在10进制中都是奇数

  • 2进制与16进制相互转换容易

  • 8bits(位) = 1byte(字节)

  • 网络一般是bits,u盘一般是1byte

  • 需要记住的16进制到10进制的几个数:
    0x30 48
    0x31 49
    0x41 65
    0x61 97
    0x7F 127

  • 例子:

    1. 111 二进制
      F 十六进制
      15 十进制

    2. 0xFF 十六进制 表示256个无符号位
      1111 1111 二进制
      2的8次幂减1 255

    3. 1000 00000 二进制
      2的7次幂 128 十进制
      0x80 十六进制

    4. 0x7F 十六进制
      0111 1111 二进制
      255-128=127 十进制

    5. int(‘1a’, 16) = 16+10=26

2.按位运算

&  位与
|  位或
~  位非
^  位异或
  • 例子:

    1. 12的源码,补码,反码都为 0000 1100在按位取反的过程中计算机自动求了补码,~12的按位取反 为1111 0011,计算机认为这是个负数,所以又去了补码(负数的补码为,首位不变,其他位数取反码,并加1),即为1000 1100+1=1000 1101=-13

    2. -1 我们看到的格式为-0b1和1000 0001, 在计算机中的存在格式为1111 1110 + 1=1111 1111 =0xFF。所以0xFF 不仅表示正的255还表示-1

    3. 0xFE = 0xFF-1=1111 1111 -1 = 1111 1110 = 0xFE

    4. 0xFE的补码即在计算机中的存在格式 1000 0001+1=1000 0010 =-2

    5.异或
    10^9 = 0000 1010 ^ 0000 1001 = 0000 0011=3
    10^-9 = 0000 1010 ^ (1000 1001自己看到的)1111 0110+1 =1111 1101 取补码 1000 0011=-3

3.逻辑运算

逻辑元算
and
or
not 
  • Or短路是指返回表达式第一个位置的值 4 or 5 or 6=4+5+6 返回6
  • and短路是指 第一个位置为0 0 and 5 and 6 =056 返回0
  • 与false等价的 4个空容器,空串,None,0
  • 运算符的优先顺序: 单目运算符> 双目算数运算符 >比较运算符 >逻辑运算符
  • 例子:
    1. (1 and 0) or (5 and 6) 返回6
    2. 0 or ‘abc’ 返回‘abc’

4.分支及循环

  • 分支: if前面的条件被跳过,后面隐含前面条件

  • If 和elif加条件和冒号 else后面直接加冒号

  • 只有一个条件可以写成 if 3<2:print(‘111’)

  • range(a)前包后不包,是惰性对象,range?查看帮助 ,一般作为计数器,当作为计数器时a大于

  • for i in range(10, -1, -2)打印10,8,6,4,2,0

  • continue 跳过当前一次continue后面的循环,进入到下一次循环,如果当前循环是最后一次,则跳出循环

  • Break终止当前for循环或者其他循环,continue终止本次循环进入下一次循环

  • 例子:

    1. for i in range(100):
          print(i)
          if  i > 2:
              break
          else:
          print('end')
      
    • 当如果循环正常执行,并且遇到了break,就认为循环不正常,不执行else(两个条件),否则都执行else

5.特殊符号

  • \n 换行
  • \r 换行
  • \r\n 回车换行
  • r R 加到字符串前面表示不转义
  • \t 四个空格
  • \ 在转义前面再加一个反斜杠表示不转义
  • 在字符串最后加上\ 表示不换行
  • f 表示字符串前缀,例如f’{a}, {6}’ = ‘100, 200’

6.python语言的特点

  • python是动态的强类型语言,动态语言的特点是不需要事先声明变量,
    可以在使用的同时被声明,使用方便,但是也存在无法判断变量类型问题,强类型语言的特点是只有相同类型变量之间才可以操作 ,例如:python不能运算‘abc’+1, 但是在python中也存在隐式的类型转换,例如:1+0.5=1.5

7.数值类型

  • int 为长整型,无大小限制,但是受内存限制
  • bool 可以和整型直接运算
  • int 截取整数部分
  • // floored quotient 向下取整
  • math.floor() 向下 math.ceil()向上 round 4舍6入 5取偶
  • math.pi math.e math.sqrt()=2 ** 0.5 pow(2,3) math.pow(2,3) math.log2(4) math.log10(100)=2
  • min(range(5))=0 min([9,0])=0 min(3, 4, 5)=3 max用法相同
  • a = 2 , b = hex(100) 不能这么用
  • bin(100) = 0110 0100 hex(100) = 64 oct(100)=0o144
  • type(12)返回类型 isinstance(‘abc’, (str, int, float))返回布尔

8. 容器

(1). 列表

  • list 索引0-len(a)-1 -len到-1,构建list=[1,2] list=list(range(5)) list=list()

    ​ list 方法:

    ​ alst.len() 时间复杂度O(1)

    ​ alst.append() O(1)

    ​ alst.index(object, 开始索引,结束索引) O(n) 两个索引范围前包后不包

    ​ alst.count() O(n)

    ​ alst.insert(索引,object) 在索引前面插入,超出索引插在最前面或最后面 O(n)

    ​ alst.extend([1,2]) O(1)

    ​ alst + blst 生成心列表,开劈新空间 注意

    ​ alst*5 对当前列表里面的元素操作,例如:[[2,3]乘5]=[[2,3,2,3,2,3,2,3]]生成新列表,开辟新空间,注意

    ​ alst.sort(*, key=None, reverse=False) 可选参数和必须写的关键字参数,没生成新的,原地排序,sort有时必须要用,但是

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值