回巢

python基础

python面试重点(基础篇)

第一部分 必答题(每题两分)

1、简述列举了解得编程语言及语言间的区别?

JavaCC++VBPYTHONGoPHP

编程语言主要分为编译型和解释型。编译型语言是将源代码编译成机械码,之后才能执行语言。解释型不需要编译,直接逐行翻译就行。

2、列举PYTHON2PYTHON3的区别?

Print:Python3print是一个函数,必须用括号括起来;Python2printclass

InputPythoninput得到的维str类型;Python2中的input得到的维int类型。

整除:Python3/表示真除,%表示取余,//表示地板除(结果取整);Python2/表示根据除数被除数小数点位得到结果,//同样表示地板除

3、看代码写结果

V1=1 or 2

V2=3 and 7 or 9 and 0

True

False

4、比较下值有什么不同?

v1=[1,2,3]

V2=[(1),(2),(3)]

V3=[(1,),(2,),(3,)]

V1中是一个列表。V2中列表中套元组。V3中是列表中套数组

5、用一行代码实现数值交换

a=1

b=2

a、b=ba

6、Python中单引号、双引号、三引号的区别?

单引号代表str类型,双引号代表单行注释,三引号代表多行注释。

7、is==的区别?

==比较判断两个对象的值是否相同,is判断id是否相同。

8、python里如何实现tuplelist的转换?

Tuplelist

Listtuple

9、如何实现字符串name=’老男孩的反转?

Reversename

10、两个set如何获取交集、并集、差集?

11、那些情况下,y=x-x-y)会成立?

  1. python中如何拷贝一个对象?

Deep

  1. 简述赋值、浅拷贝、深拷贝的区别?

赋值可以随便进行变动。浅拷贝的拷贝内容变动原内容也会进行变动。深拷贝是另一个内容有可能不会变动

  1. pass的作用?

可以短暂进行站位。

15. 阅读代码写结果

import copy

a = [1,2,4,5,['b','c']]

b = a

c = copy.copy(a)

d = copy.deepcopy(a)

a.append(5)

a[4].append('d')

print(b)

print(c)

print(a)

[1,2,3,4,[‘b’,’c’,’d’],5]

[1,2,3,4,[‘b’,’c’,’d’]]

[1,2,3,4,[‘b’,’c’,’d’],5]

  1. python实现9*9乘法表

l=1

i=0

while l<10:

i=1

while i<=l:

if i==l:

print(i,'*',l,'=',l*i)

else:

print(i,'*',l,'=',l*i,end=' ')

i += 1

l += 1

  1. Python显示一个斐波那契数列

def fibonnacii(n):

i,num1,num2=0,1,1

while i<n:

yield num1

num1,num2=num2,num1+num2

I=i+1

  1. 如何删除列表中重复的值?

List(set(list1))

  1. 一个大小为100G的文件etl_log.txt,要读取文件中的内容,写出具体过程代码?

with open(“etl_log.txt”,’r’,encoding=’utf-8’) as f:

for line in f:

print(line,end=’’)

  1. a=dict(zip((“a”,”b”,”c”,”d”,”e”),(1,2,3,4,5)))请问a是什么?

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

  1. lambda关键字的作用?

可以省去命名一个函数的名称。

  1. *arg**kwarg作用?
  2. 用来接收不确定个数的参数,*args通常用来接收不确定个数的非关键字参数,而**kwargs通常用来接收不确定个数的关键字参数
  3. 如何在函数中设置一个全局变量?

在函数中使用global关键字定义变量

  1. filtermapreduce的作用?

Filter相当于顾虑器的作用。Map第一个参数维函数,依次将后面的参数传给第一个函数,并执行函数。如果有多个参数则,依次将后面的对应传给参数。Reduce开始的时候可迭代对象的第一个数和第一个数当成xy。然后将第一次函数的执行结果当成x,然后再传入第一个数当成y,再执行函数。

  1. 什么是匿名函数?匿名函数有什么作用?

匿名函数就是没有命名的函数。减少了不必要的参数的传入或导入。

  1. python递归 的最大层数?

1000

  1. 什么是迭代器?什么是可迭代对象?

__iter__()方法的就是迭代器。有__iter__()next()方法就是可迭代对象。

  1. 什么是生成器?

生成器是迭代器的一种,一个函数调用时返回一个迭代器,这个函数就叫生成器。通畅电邮yiled

  1. 什么是装饰器及应用场景? 

装饰器是一个以函数作为参数,并放回一个替换函数的课执行函数,是闭包的一种应用

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

凡是就是通过字符串的形式,导入模块。当我们动态的输入一个模块名的时候就可以使用到反射。

  1. 写一个普通的装饰器。

def debug(func):

     def wrapper():

         print("[debug]:enter {} ()".format(func))

         return func()

     return wrapper

@debug

def say_hello()

     print('hello')

say_hello()

  1. 写一个带参数的装饰器。

class logger(object):

    def __init__(self, level='INFO'):

        self.level = level

    def __call__(self, func):

        def wrapper(*args, **kwargs):

            print("[{level}]: the function {func}() is running...".format(level=self.level, func=func.__name__))

            func(*args, **kwargs)

        return wrapper

@logger(level="WARNING")def say(something):

    print("say {}!".format(something))

say("hello")

33. 求结果

def num():

return [lambda x:i*x for i in range(4)]

print([m(2) for m in num()])

  1. def(a, b=[])这种写法有什么陷阱?

b可能接受到时一个值,但是如果直接给b赋值的话,不使用b之前存储在接受的函数的值。

35.看代码写结果

def func(a,b=[]):

b.append(a)

return b

v1 = func(1)

v2 = func(2,[10,20])

v3 = func(3)

print(v1,v2,v3)

[1,3]

[10,20,2]

[1,3]

36. 看代码写结果

def func(a,b=[]):

b.append(a)

return b

v1 = func(1)

print(v1)

v2 = func(2,[10,20])

print(v2)

v3 = func(3)

print(v3)

[1]

[10,20,2]

[1,3]

37.请写出一个函数实现Ip地址转换成一个整数

10.3.9.12转换规则

10 00001010

3 00000011

9 00001001

12 00001100

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

import socket, struct

def ip_to_long(ip):

  """

  Convert an IP string to long

  """

  packedIP = socket.inet_aton(ip)

  return struct.unpack("!L", packedIP)[0]

38. 请查找一个目录下的所有文件(可能存在文件嵌套)

39. 求结果

import math

print (math.floor(5.5))

6

  1. 是否使用过functools中的函数?具体作用是什么?

在装饰器中用过,如果不使用wraps,则原始函数的__name____doc__的值就会丢失

  1. rematchsearch区别?

match()函数是在string的开始位置匹配,如果不匹配,则返回None

search()会扫描整个string查找匹配;也就是说match()只有在0位置匹配成功的话才有返回,

42. python匹配HTMLtag的时候,<,><.?>有什么区别?

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

Range()

  1. super的作用?

当子类中的方法与父类中的方法重名时,子类中的方法会覆盖父类中的方法,那么,如果我们想实现同时调用父类和子类中的同名方法,就需要使用到super()这个函数,用法为super().函数名()

  1. 双下划线和单线划线的区别?

"单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;

"双下划线" 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

  1. @staticmethod@classmethod的区别?

类方法:使用装饰器@classmethod。第一个参数为当前类的对象,通常为cls。实例对象和类对象都可以调用类方法。

静态方法:使用装饰器@staticmethod。没有selfcls参数。方法体中不能使用类或者实例的任何属性和方法。实例对象和类对象都可以调用。

47. 实现一个店里模式(加锁)

48. 栈和队列的区别?

49.一下代码输出是什么?请给出 答案并解释。 

class Parent(object):

x = 1

class Child1(Parent):

pass

class Child2(Parent):

pass

print Parent.x, Child1.x, Child2.x

Child1.x = 2

print Parent.x, Child1.x, Child2.x

Parent.x = 3

print Parent.x, Child1.x, Child2.x

50参考下年代码片段

class Context:

pass

with Content() as ctx:

ctx.do_something()

请在context类下添加代码完成类的实现

第二部分 可选题

1. 如何获取列表中第二大的值?

2.简述python内存管理机制。

python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略

3. 简述python的垃圾回收机制。

4.请用两个队列来实现一个栈。

5. 请用python实现一个链表

6.请用python实现链表的逆转

posted on 2020-02-26 11:45  回巢  阅读(212)  评论(0编辑  收藏  举报

导航