面试准备

1. 面试题准备
a. 谈谈你对Python和其他语言的区别?
  使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python几行代码可以解决,其他可能就需要很多行.
  速度:Python的运行速度与其他语言相比比较慢
  1. 1. 简单

    Python是一种代表简单思想的语言。

    2. 易学

    Python有极其简单的语法。

    3. 免费、开源

    Python是FLOSS(自由/开放源码软件)之一。

    4. 高层语言

    使用Python编写程序时无需考虑如何管理程序使用的内存一类的底层细节。

    5. 可移植性

    Python已被移植到很多平台,这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC。

    6. 解释性

    可以直接从源代码运行。在计算机内部,python解释器把源代码转换为字节码的中间形式,然后再把它翻译成计算机使用的机器语言。

    7. 面向对象

    python既支持面向过程编程也支持面向对象编程。

    8. 可扩展性

    部分程序可以使用其他语言编写,如c/c++。

    9. 可嵌入型

    可以把Python嵌入到c/c++程序中,从而提供脚本功能。

    10. 丰富的库

    Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。

缺点:

运行速度慢


b. 为什么要学python?
简单易学:Python 语言相对于其他编程语言来说,属于比较容易学习的一门编程语言。

语法优美:Python 语言力求代码简洁、优美。

丰富强大的库: Python 语言的类库非常的全面,包含了解决各种问题的类库。

开发效率高:Python 语言因为有了丰富强大的类库,所以,Python 的开发效率能够显著提高。

应用领域广泛:例如,Web 开发、网络编程、自动化运维、Linux 系统管理、数据分析、科学计算、人工智能、机器学习等等。
c. 数据类型:
- 字符串
    join
    split
    strip
    index
    find
    len
    str[]
    count
- 字典
    .get
    .pop
     .fromkeys():
     .has_key():
     .items():
     .keys():
     .setdefault( ):
     .update():
     .values():

- 元组

      1.连接——'+'连接2个元组形成一个新的元组

      2.重复——'*'重复一个元组加在末尾

      3.删除——元组不能删除其中的元素,但是元组可以整个删除,del tup

      4.元组索引和截取——与字符串类似tup[index]/tup[1:3]

      5.len(tup)——返回元组的长度

      6.max(tup)——返回元组最大值

      7.min(tup)——返回元组最小值

      8.tuple(seq)——将列表转换为元组

      9.tuple.index(obj):从元组中找出某个值第一个匹配项的索引值

      10.tuple.count(obj): 统计某个元素在元组中出现的次数


- 列表
    

      1.list.append(obj)——在列表末尾添加新元素,返回值:无。

      2.list.count(obj)——统计某个元素(列表中的值)在列表中出现的次数,返回值:返回该次数。

      3.list.extend(seq)——在列表后面一次性添加多个值(类似append直接改变该列表),seq必须是列表或者range(),返回值:无。

      4.list.index(obj)——找出第一个匹配到参数obj(值)的索引,返回值:返回索引值。

      5.list.insert(index,obj)——将值(obj)插入到指定索引(index),返回值:无。

      6.list.pop(obj=list[-1])——删除列表中的元素(默认删除最后项),返回值:返回该删除项的值。

      7.list.remove(obj)——删除第一个值为obj的匹配项,返回值:无。

      8.list.reverse()——列表反向排序,无参数,无返回值。

      9.list.sort([func])——对列表进行排序,根据字母和数字由小到大,列表数据类型要一致(同数字或同字符串),func为指定方法(可选参数)

      10.list.clear()——清空列表,类似于del a[:],返回值:无。

      11.list.copy()——复制列表并返回,返回值:被复制的列表。


- 集合
    add,remove,update,pop,union()并集,issubset()如果另一个集合包含这个集合,返回 True,intersection()交集,difference()差集
- collections
    namedtuple用属性来引用字典的某个元素,deque双向列表,defaultdict键不存在取默认,OrderedDict有序key字典,Counter计数器

d. 函数
- 函数参数传递的是什么?
      Python中函数参数的传递是变量指向的对象的地址
      1. 不可变对象作为函数参数,相当于值传递。 
      2. 可变对象作为函数参数,相当于引用传递
  
- def func(a,b=[]):pass
  

      - lambda 表达式
      简单函数的简洁表示--匿名函数,主体是表达式,返回函数对象本身,
- 列表生成式 []
      运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁
- 生成器表达式 (for i in range(1))
      生成器表达式返回的不是一个列表类型对象,而是一个生成器对象,节省空间
- 题:
val = [lambda :i+1 for i in range(10)]
val[0] ##<function <listcomp>.<lambda> at 0x00000290D02C1E18>
data = val[0]()
print(data)  ##10
      - 常见内置函数:
- map
        遍历序列,对序列中每个元素进行操作,最终获取新的序列。
- reduce
        对于序列内所有元素进行累计操作
- filter
        对于序列中的元素进行筛选,最终获取符合条件的序列
- zip
        zip可接受一系列可迭代对象作为参数,将对象中对应的元素打包成一个个tuple,然后返回zip类型的对象


- instance
        isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()
- type
        type() 函数如果你只有第一个参数则返回对象的类型,三个参数返回新的类型对象

- 
- 生成器、迭代器、装饰器
      含有yield关键字的函数就是生成器
      含有iter和next方法的可迭代对象就叫迭代器  
      在函数的前后添加功能,不影响函数本身的语法糖  
      
2. 回顾
- wtforms
- SQLALchemy

问题:
a. wtforms作用?
      --表单验证,渲染标签
b. wtforms涉及到的知识点?哪里用了?
- metaclass
        用于指定使用哪个类来创建当前类--wtforms对字段进行排序
        metaclass--->类--->实例
- 封装:
        wtforms--UnboundField
        restframework--request
- __new__
        wtforms--实例化流程-字段实例化时返回:不是StringField,而是UnboundField
        restframework--many=true
        单例模式--类方法
- __mro__
        类的继承顺序
- setattr
        cbv,django配置文件,wtforms实例化:setattr(self, name, field)
         - type(...)
        type创建类
c. ORM和原生SQL比较?
ORM操作简单,开发效率快
      原生SQL操作复杂,数据库执行效率快
d. 你用过的ORM框架有哪些?  
      djangoORM
      SQLAlchemy



e. SQLAlchemy
- 数据库连接池
- 原生SQL
- ORM
- 表操作
- 默认值
- 索引(联合索引,想要命中必须遵循“最左前缀”的规则)
- sqlalchemy中设置表:
- 引擎
- 编码
- 记录操作
- 增删改查

猜你喜欢

转载自www.cnblogs.com/weiwu1578/p/8987740.html