python面试代码题_python面试基础篇80题

1.为什么学习python?

1354843-20181003205121560-366216330.png

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

C语言由于其底层操作特性和历史的积累,在嵌入式领域是当之无愧的王者。

PHP跨平台,性能优越,跟linux/unix结合比跟windows结合性能强45%,开发成本低,php5已经有

成熟的面向对象体系,适合开发大型项目淘宝网,Yahoo,163,sina等等大型门户,很多选用

PHP来作为他们的开发语言。

JAVA的优点:1.简单性 2.面向对象性(面向对象的程度可以达到95%)3.健壮性4.跨平台性

5.高性能(自动垃圾回收机制) 6.多线程 7.动态性 8.安全性

========================================================================

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

1354843-20181003205432483-1527411591.png

5.python解释器种类及其特点

cpython:这个解释器是用C语言开发的,所以叫cpython,在命名行下运行python,就是启动cpython

解释器,cpython是使用最广的python解释器。

jython:jython是运行在java平台上的python解释器,可以直接把python代码编译成java字节码执行。

Ipython:Ipython是基于cpython智商的一个交互式解释器,也就是说,Ipython只是在交互方式上

有所增强,但是执行python代码的功能和cpython是完全一样的,好比很多国产浏览器虽然外观

不同,但内核其实调用了IE。

6.位和字节的关系

1354843-20181004122444692-1788627174.png

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

1354843-20181004122454033-1743192628.png

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

1354843-20181003210417195-1381242469.png

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

上课补充的代码转换

print(bin(3)) #十进制转成二进制,0b11

print(oct(8)) #十进制转成八进制,0o10

print(10) #10

print(hex(16)) #十进制转成十六进制,0x10

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

#先将其转换为字符串,再使用int函数,指定进制转换为十进制。

print(int("0b1111011",2))

#值为123

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

print("转换为二进制为:", bin(18))

#转换为二进制为: 0b10010

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

print(int("011",8))

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

print("转换为八进制为:", oct(30))

#转换为八进制为: 0o36

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

print(int("0x12",16))

#18

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

print("转换为十六进制为:", hex(87))

转换为十六进制为: 0x57

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

如 10.3.9.12 转换规则为:

10 00001010

3 00000011

9 00001001

12 00001100

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

11.python递归的最大层数?

1354843-20181003210029762-1728050027.png

12.求结果:

v1 = 1 or 3

v2 = 1 and 3

v3 = 0 and 2 and 1
v4 = 0 and 2 or 1v5 = 0 and 2 or 1 or 4
v6 = 0 or Flase and 1

这题不会

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

1354843-20181003210843709-1267799954.png

1354843-20181003210904572-1294312495.png

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

字节码

字节码是一种中间码

字节码通常指的是已经经过编译,但与特定机器码无关,需要直译器转译后才能成为机器码的中间代码。字节码通常不像源码一样可以让人阅读,而是编码后的数值常量、引用、指令等构成的序列。

字节码主要为了实现特定软件运行和软件环境、硬件环境无关。字节码的实现方式是通过编译器和虚拟机器。编译器将源码编译成字节码,特定平台上的虚拟机器将字节码转译为可以直接执行的指令。字节码的典型应用为Java语言。

总结:字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。

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

1354843-20181004094716262-1691452279.png

16.列举 Python2和Python3的区别?

pass

17.用一行代码实现数值交换:

a = 1

b = 2

a,b=b,a

print(a,b) #a=2,b=1

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

long整数类型呗python3废弃,统一使用int

19.xrange和range的区别?

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

二者使用时相同,但返回类型不同,xreadlines返回的是一个生成器,readlines返回的是list

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

0 空 none

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

1354843-20181004095124561-1088394634.png

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

1354843-20181004095317040-229167258.png

24.pass的作用?

1354843-20181004095610508-666307887.png

25.*arg和**kwarg作用

1354843-20181004095710480-1071378682.png

26.is和==的区别

is对比的是值,==对比的是内存地址

未完待续

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

待整理

28.python垃圾回收机制

1354843-20181004100732188-518055138.png

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

python的每个对象分为可变和不可变

可变:列表,字典

不可变:数字,字符串,元祖

对不可变类型的变量重新赋值,实际上是重新创建一个不可变类型的对象,并将原来的变量重新指向新创

建的对象(如果没有其他变量引用原有对象的话(即引用计数为0),原有对象就会被回收)。

不可变类型

30.求结果

未完待续

31.

未完待续

32.列举常见的内置函数

33.filter、map、reduce的作用?

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

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

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

37.re的match和search区别?

1354843-20181004121001437-222119876.png

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’] ?

1354843-20181004120851517-1067383699.png

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

1354843-20181004120901575-761363455.png

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

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

1354843-20181004120720272-2002732074.png

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

1354843-20181004120737511-1856010212.png

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

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

通过log的分析,可以方便用户了解系统或软件、应用的运行情况;如果你的应用log足够丰富,

也可以分析以往用户的操作行为、类型喜好、地域分布或其他更多信息;如果一个应用的log同

时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、

解决问题,补救损失。简单来讲就是,我们通过记录和分析日志可以了解一个系统或软件程序

运行情况是否正常,也可以在应用程序出现故障时快速定位问题。比如,做运维的同学,在接

收到报警或各种问题反馈后,进行问题排查时通常都会先去看各种日志,大部分问题都可以在

日志中找到答案。再比如,做开发的同学,可以通过IDE控制台上输出的各种日志进行程序调

试。对于运维老司机或者有经验的开发人员,可以快速的通过日志定位到问题的根源。可见,

日志的重要性不可小觑。日志的作用可以简单总结为以下3点:

程序调试

了解软件程序运行情况,是否正常

软件程序运行故障分析与问题定位

如果应用的日志信息足够详细和丰富,还可以用来做用户行为分析,如:分析用户的操作行为、

类型洗好、地域分布以及其它更多的信息,由此可以实现改进业务、提高商业利益。

logging模块默认定义了以下几个日志等级,它允许开发人员自定义其他日志级别,但是这是不

被推荐的,尤其是在开发供别人使用的库时,因为这会导致日志级别的混乱。

1354843-20181006062658735-636895996.png

开发应用程序或部署开发环境时,可以使用DEBUG或INFO级别的日志获取尽可能详细的日志信息来进行开发或部署调试;

应用上线或部署生产环境时,应该使用WARNING或ERROR或CRITICAL级别的日志来降低机器的I/O压力和提高获取错误

日志信息的效率。日志级别的指定通常都是在应用程序的配置文件中进行指定的。

1354843-20181006062757660-2026825447.png

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

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

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

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

nums=[1,3,7,11,22,34,55,78,111,115,137,149,246,371]

def search(search_num,nums):

print(nums)

if len(nums) == 0:

print('not exists')

return

mid_index=len(nums) // 2

if search_num > nums[mid_index]:

# in the right

nums=nums[mid_index+1:]

search(search_num,nums)

elif search_num < nums[mid_index]:

# in the left

nums=nums[:mid_index]

search(search_num,nums)

else:

print('find it')

search(31,nums)

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

54.os和sys模块的作用?

1354843-20181004120204404-1518289498.png

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

1354843-20181004120214255-2085586000.png

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

1354843-20181004120224726-2063812532.png

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

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

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

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

1354843-20181004121203528-456437132.png

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

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

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

函数:函数是封装了一些独立的功能,可以直接调用,python内置了许多函数,同时可以自建函数

来使用。

方法:方法和函数类似,同样封装了独立的功能,但是方法是需要通过对象来调用的,表示针对

这个对象要做的操作,使用时采用点方法。

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

1354843-20181004121303495-444097685.png

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

1354843-20181004121422436-633887991.png

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

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

1354843-20181004121500207-832230453.png

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

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

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

装饰器的写法待补充

1354843-20181004121647050-1735044548.png

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,如果想要保留中文怎么办?

不理解

1354843-20181004122151576-1118019120.png

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值