第一部分(python基础篇)80题

  1. 为什么学习Python?==*==

    # 1. python应用于很多领域,比如后端,前端,爬虫,机器学习(人工智能)等方面,几乎能涵盖各个开发语言的领域,同时它相对于其他语言而言,简洁。
  2. 通过什么途径学习的Python?==*==

    # 通过自学,网上看视频资料,网上买书的方法学习
  3. Python和Java、PHP、C、C#、C++等其他语言的对比?==*==

    '''
    python
    1. 简单————Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格。Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
    2. 易学————就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。
    3. 免费、开源————Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为什么Python如此优秀的原因之一——它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。
    4. 高层语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
    5. 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有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、Symbian以及Google基于linux开发的Android平台。
    6. 解释性————这一点需要一些解释。一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。
    7. 面向对象————Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。
    8. 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
    9. 可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
    10. 丰富的库————Python标准库确实很庞大。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。缺点:
    1. 运行速度慢,相比于C++/C运行速度偏慢,不过对于用户而言,机器上运行速度是可以忽略的。2. 构架选择太繁杂,没有像C#这样的官方.net构架,也没有像ruby由于历史较短,构架开发的相对集中,所以人人都有不同的方案。C:优点:1. 简洁紧凑、灵活方便 2. 运算符丰富3. 数据结构丰富4. C是结构式语言5. C语法限制不太严格,程序设计自由度大6. C语言允许直接访问物理地址,可以直接对硬件进行操作7. C语言程序生成代码质量高,程序执行效率高8. C语言适用范围大,可移植性好9. C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型10. 有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护缺点:运算符和运算优先级过多,不便于记忆,语法定义不严格,编程自由度大,对新手不友好。更多对比请参考:https://www.jianshu.com/p/7c8fdedf352e'''
  4. 简述解释型和编译型编程语言?

    # 同声翻译:解释性语言# 谷歌翻译:编译性语言# 个人感觉他是想考察你是否对其他的语言有所了解,同时也想看看你对python的理解有多深
  5. Python解释器种类以及特点?==*==

    '''
    1. CPythonc语言开发的 使用最广的解释器
    2. IPython基于cpython之上的一个交互式计时器 交互方式增强 功能和cpython一样
    3. PyPy目标是执行效率 采用JIT技术 对python代码进行动态编译,提高执行效率
    4. JPython运行在Java上的解释器 直接把python代码编译成Java字节码执行
    5. IronPython运行在微软 .NET 平台上的解释器,把python编译成. NET 的字节码
    '''
  6. 位和字节的关系?

    # 1字节(Bytes) = 8位(bit)
  7. b、B、KB、MB、GB 的关系?

    '''
    1B = 8b
    1KB = 1024B
    1MB = 1024KB
    1GB = 1024MB
    '''
  8. 请至少列举5个 PEP8 规范(越多越好) ==*==

    '''
    1. 代码排版2. 文档排版3. 避免多余空格4. 注释5. 命令风格6. 编码建议'''
  9. 通过代码实现如下转换:

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

    十进制转换成二进制:v = 18

    八进制转换成十进制:v = “011”

    十进制转换成八进制:v = 30

    十六进制转换成十进制:v = “0x12”

    十进制转换成十六进制:v = 87

'''
第一题
v = b'0b1111011'
print(int(v,2))第二题:
print("转换为二进制为:", bin(18))第三题:
八进制转换成十进制:v = “011”

print(int("011",8))第四题:print(oct(v))第五题:
v = '0x12'
print(int(v,16))第六题:
v = 87
print(hex(v))
'''
  1. 请编写一个函数实现将IP地址转换成一个整数。

如 10.3.9.12 转换规则为:

​ 10 00001010


 3 00000011


​ 9 00001001


 12 00001100


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

IP = "10.3.9.12"def addr2dec(addr):"将点分十进制IP地址转换成十进制整数"items = [int(x) for x in addr.split(".")]# return sum([items[i] << [24, 16, 8, 0][i] for i in range(4)])return sum([items[i]*2**[24,16,8,0][i] for i in range(4)])print(addr2dec(IP))
# 167971084
  1. python递归的最大层数?

第一种:

def foo(n):print(n)n += 1foo(n)if __name__ == '__main__':foo(1)# 998

第二种:

import syssys.setrecursionlimit(100000)def foo(n):print(n)n += 1foo(n)if __name__ == '__main__':foo(1)# 3221左右
  1. 求结果:
    v1 = 1 or 3

    v2 = 1 and 3

    v3 = 0 and 2 and 1
    
 v4 = 0 and 2 or 1
    
 v5 = 0 and 2 or 1 or 4
    
 v6 = 0 or False and 1
>>> v1 = 1 or 3
>>> v1
1
>>> v2 = 1 and 3
>>> v2
3
>>> v3 = 0 and 2 and 1
>>> v3
0
>>> v4 = 0 and 2 or 1
>>> v4
1
>>> v5 = 0 and 2 or 1 or 4
>>> v5
1
>>> v6 = 0 or False and 1
>>> v6
False'''
对于python而言
1. 在不加括号时候,and优先级大于or
2. x or y的值只可能是x或y,x为真就是x,x为假就是y
3. x and y的值只可能是x或y,x为真就是y,x为假就是x
'''
  1. ascii、unicode、utf-8、gbk 区别?
'''
1. ascii 8位一个字节2. unicode英文:32位  四个字节中文:32位  四个字节
3. utf-8英文:8位 一个字节中文:16位 两个字节
4. gbk:英文:8位  一个字节中文:16位  两个字节python3中:str 在内存中是unicode编码bytes类型对于英文:str:表现形式:s = 'alex'编码方式:010101010 unicodebytes:表现形式:s = b'alex'编码方式:000101010 utf-8 gbk对于中文:str:表现形式:s = '中国'编码方法:010101010 unicodebytes:表现形式:s = b' x\e91\e91\e01\e21\e31\e32'编码方式:000101010 utf-8 gbkencode 编码,如何将str --> bytes使用方法:str.encode('utf-8')decode 解码,如何将bytes --> str使用方法:bytes.decode('utf-8')
'''
  1. 字节码和机器码的区别?
'''
机器码:机器语言字节码:汇编语言'''
  1. 三元运算规则以及应用场景?
a = 10
b = 20
x = a if a < b else b# 为真时的结果 if 判断条件 else 为假时的结果(注意,没有冒号)
  1. 列举 Python2和Python3的区别?
'''
1. 2中print "字符串"  被  3中的 print()取代
2. 2中input得到的是int类型,raw_input得到的是str类型,而3中只有input且是str类型
3. 2中字符串以8-bit字符串存储,3中字符串以16-bit unicode字符串存储
4. 2中try:passexcept Exception,e:pass3中try:passexcept Exception as e:pass
'''
  1. 用一行代码实现数值交换:
    
 a = 1
    b = 2
a,b = b,a
  1. Python3和Python2中 int 和 long的区别?
'''
python2中有long类型
python3中没有long类型,只有int类型
'''
  1. xrange和range的区别?
'''
在python2中:xrange  返回的是一个迭代值(生成器)range   返回的是一个列表在python3中:range 返回的是一个迭代值(生成器)'''
  1. 文件操作时:xreadlines和readlines的区别?
'''
xreadlines()则直接返回一个iter(file)迭代器,在Python 2.3之后已经不推荐这种表示方法了readlines()是把文件的全部内容读到内存,并解析成一个list,当文件的体积很大的时候,需要占用很多内存,使用该方法是一种不明智的做法。
'''
  1. 列举布尔值为False的常见值?
# 0,None,空(空容器),Flase
  1. 字符串、列表、元组、字典每个常用的5个方法?
'''
字符串:split,切片,for循环,成员运算,strip,len,replace,lower(),upper(),find()列表: append(),for循环,pop(),排序,join,insert(),切片,len(),count()增:删:改:查:
元组:查:index()count()len()比较:cmp(tuple1,tuple2) 比较两个元组元素;len(tuple):计算元组元素个数;max(tuple):返回元组中元素最大值。;min(tuple):返回元组中元素最小值。tuple(seq):将列表转换为元组'''
  1. lambda表达式格式以及应用场景?
# lambda arges1 [arges2...]: 表达式
lambda x: x+2
  1. pass的作用?
# 相当于填充代码
  1. *args和**kwargs作用
'''*args 作为形参,当用户传入多个位置参数时,其值都存在args中(以元组的形式)**kwargs  作为形参,当用户传入多个关键字参数时,其值都存在kwargs中(以键值对的形式存储)'''
  1. is和==的区别
# is 是判断内存地址的(身份运算符)# == 是判断值是否相等'''
内存地址相同,值一定相等;值相等,内存地址不一定相等。'''
  1. 简述Python的深浅拷贝以及应用场景?
'''
普通拷贝
a 是 b的普通拷贝,则a发生改变 b也发生改变。b发生改变,a也发生改变浅拷贝
a 是 b的浅拷贝,则a中的不可变数据类型发生改变,b不会变。a中可变类型发生改变,b也会随之改变深拷贝
a 是 b的深拷贝,a,b无关'''# 浅拷贝
import copy
copy.copy()# 深拷贝
import copy
copy.deepcopy()
28. Python垃圾回收机制?

python里每一个东西都是对象,它们的核心就是一个结构体:PyObject

typedef struct_object {int ob_refcnt;struct_typeobject *ob_type;
} PyObject;

PyObject是每个对象必有的内容,其中ob_refcnt就是做为引用计数。当一个对象有新的引用时,它的ob_refcnt就会增加,当引用它的对象被删除,它的ob_refcnt就会减少

#define Py_INCREF(op)   ((op)->ob_refcnt++) //增加计数
#define Py_DECREF(op) \ //减少计数if (--(op)->ob_refcnt != 0) \; \else \__Py_Dealloc((PyObject *)(op))

当引用计数为0时,该对象生命就结束了。

引用计数机制的优点:

  • 简单
  • 实时性:一旦没有引用,,内存就会直接释放了。不用像其他机制等到特定时机。实时性还带来一个好处:处理回收内存的时间分摊到了平时

引用计数机制的缺点:

  • 维护引用计数消耗资源

  • 循环引用

    list1 = []
    list2 = []
    list1.append(list2)
    list2.append(list1)

    list1与list2相互引用,如果不存在其他对象对它们的引用,list1与list2的引用计数也仍然为1,所占用的内存永远无法被回收,这将是致命的。
    对于如今的强大硬件,缺点1尚可接受,但是循环引用导致内存泄露,注定python还将引入新的回收机制。(标记清除和分代收集)

    参考连接:https://www.cnblogs.com/pinganzi/p/6646742.html#_label6

29. Python的可变类型和不可变类型?
'''
可变类型:列表,字典,集合不可变类型:整型,浮点型,字符串'''
  1. 求结果:

    v = dict.fromkeys(['k1','k2'],[])
    v['k1'].append(666)
    print(v)
    v['k1'] = 777
    print(v)
    {'k1': [666], 'k2': [666]}
    {'k1': 777, 'k2': [666]}原因:k1和k2指向的是同一个列表,也就是同一块内存空间。
  2. 求结果

    def num():return [lambda x:i*x for i in range(4)]print([m(2) for m in num()])
    [6, 6, 6, 6]
    原因:只有到需要计算i的值时,才会真正计算i的值

    类似的题目:

    flist = []
    for i in range(3):def foo(x):print(x + i)flist.append(foo)for f in flist:f(2)
    4
    4
    4
    原因:只有到需要计算i的值时,才会真正去算i的值。

转载于:https://www.cnblogs.com/plf-Jack/p/11093713.html

面试题之第一部分(Python基础篇) 80题相关推荐

  1. python包括哪些部分_第一部分 Python基础篇

    第⼀一部分 Python基础篇 1. 为什什么学习Python? 朋友推荐,比较简单易学,生态圈比较强大 发展趋势:人工智能.数据分析 2. 通过什什么途径学习的Python? 廖雪峰.网络博客.相关 ...

  2. 经典Python面试题之Python基础篇

    Python基础篇 1. 为什么学习Python? 2. 通过什么途径学习的Python? 3. Python和Java.PHP.C.C#.C++等其他语言的对比? 4. 简述解释型和编译型编程语言? ...

  3. 杨洋python课程提高篇_杨洋老师《全民一起玩Python 基础篇+提高篇》

    全民一起玩Python 基础篇+提高篇 适用人群: 想用轻松系统的方式,从零开始真正理解掌握Python.进而学习办公.网抓.数据.AI.网站等技术的各界人士 课程概述: 制作精细.自带吐槽,每节课程 ...

  4. 杨洋python课程提高篇_杨洋老师:全民一起玩Python 基础篇+提高篇,老师幽默严谨不枯燥的学习编程...

    课程介绍 本套课程出自杨洋老师的全民一起玩Python 基础篇+提高篇官网售价299元,程保持了杨洋博士老师幽默严谨不枯燥的学习编程,清晰全面的授课风格,配有丰富的教学演示和插图.动画,是初学者学习P ...

  5. python基础篇{控制流语句}

    控制流语句 条件控制 单条件判断 多条件判断 练习 循环控制 while语句 for语句 range函数 练习 break 和 continue 语句 break语句 continue  python ...

  6. 萌新向Python数据分析及数据挖掘 第一章 Python基础 第三节 列表简介 第四节 操作列表...

    第一章 Python基础 第三节 列表简介 列表是是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中的元素包括在方括号([])中,每个元素之间用逗号分割.列表是可变的数据类型, ...

  7. 廖雪峰python教程——第一章 Python基础

    第一章 Python基础 一.数据类型和变量 Python的数据类型包括整数.浮点数.字符串.布尔值.空值.变量.常量等.其中整数可以表示任意大小的整数:空值是Python里一个特殊的值,用None表 ...

  8. Python基础篇:你好,世界!

    Python基础篇:你好,世界! 开了一段时间的博客了,可能很多人都对Python基础不掌握或者掌握不牢固,所以我会分别出算法篇和基础篇的教程来教大家一步一步走向程序员的水平 接着我们看看下面这行代码 ...

  9. Python基础篇(七)

    Python基础篇(七) 前言 一.元组 1.1 元组的定义 1.2 元组的常见操作 二.字典 2.1 字典的语法 2.2 字典常见操作 2.3 字典的循环遍历 三.任务清单 3.1 基础练习 3.2 ...

最新文章

  1. u-boot的linux内核映像加载,基于U_Boot的Linux内核映像加载与引导功能实现.pdf
  2. Centos安装Xen总结
  3. Java配置文件的使用
  4. apache karaf_Apache Karaf遇到Apache HBase
  5. mysql数据转存到时序数据库_干货丨如何高速迁移MySQL数据到时序数据库DolphinDB...
  6. hbase region split 过程(翻译)
  7. Apache阶段二-
  8. 变形 圆形_板换角孔变形计圆形变身流线形
  9. POJ1185炮兵阵地(状态压缩 + dp)
  10. C++--第12课 - 操作符重载 - 上
  11. android 广播的权限,Android Broadcast 和 BroadcastReceiver的权限限制方式
  12. 【ECSHOP插件】ECSHOP会员头像,上传头像评论显示头像
  13. 如何利用cyclone对SPC560离线烧写
  14. 如何在你的 wordpress 网站中添加搜索框
  15. python networkx 导入CSV文件画关系网络图
  16. python web面试题部分汇总
  17. 【C系列6.9】分手在雨季
  18. Excel 防止一列重复输入
  19. 100W个微信红包封面,人人都能领取到!!!
  20. 很多人觉得做地推很没有面子

热门文章

  1. 64位以内Rabin-Miller 强伪素数测试和Pollard rho 因数分解解析
  2. 【Android AAR】1 分钟不用改任何代码在 Eclipse 中使用 AAR
  3. 获取当前周、上一周、下一周日期
  4. ADO.NET 数据连接查询
  5. OC基础之访问修饰符
  6. ntv.js框架(第三章) - 机顶盒HTML和CSS编写注意事项
  7. LINUX 下设置系统时间 DATE 命令
  8. 命令行command更新android sdk + gradle设置代理
  9. CentOS中配置VNC Server
  10. 分布式文件系统—HDFS—Java API操作