python语言入门n-python面试题基础

#1.简述列举了解的编程语言及语言之间的区别?

"""

编程语言列举:c c# c++ python java php go

区别:

1.编译型语言,如c语言,整体翻译,在出现错误时最后才进行提示,修改过程要从整体去找错误

2.解释型语言,如java,一行一行进行翻译,哪里出错立即提示修改,它是乱码通过解释器翻译成机器语言

"""

#2.列举python2和python3的区别

"""

1.python2源码不统一,源码重复 python3源码统一,源码不重复

2.python2中有老式类和新式类的区别,python3只有新式类

"""

#3.看代码写结果

v1 = 1 or 2

v2 = 3 and 7 or 9 and 0

# 1 7

#4.比较以下值有什么不同

v1 = [1,2,3]

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

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

"""

v1是一个列表,里面是int类型

v2是也是列表,里面是int类型

v3是在列表中嵌套了三个元祖

"""

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

a = 1

b = 2

a,b = b,a

#6.python中单引号双引号三引号的区别

"""

单引号和双引号包起来的都为字符串

三引号包起来的是注释

"""

#7.is和==的区别

"""

==是判断两边的值是否相等

is是判断两边内存地址是否相等

"""

#8.python中如何实现tuple和list转换

# a = (1,2,3,)

# print(a)

# print(list(a))

#9.如何实现name="老男孩’的反转

# name = '老男孩'

# print(name[::-1])

#10.两个set如何获取交集并集差集

"""

交集:&

并集:|

差集:-

"""

#11.哪些情况下,y!=x-(x-y)

#x,y为两个不相等非空集合时

#12.python中如何拷贝一个对象

a = [1,2,3]

b = a.copy()

#13简述赋值,浅拷贝,深拷贝的区别

"""

赋值是将多个变量指向同一个内存地址

浅拷贝是只拷贝第一层元素的地址值,只有修改第一层的时候,不会进行改变,但是修改可变数据类型时会改变

深拷贝之后,不可变数据类型是共用的,可变数据类型则会开辟新的内存空间

"""

#14.pass的作用

"""

占位,写了pass之后,代码会继续往下执行,比如定义了一个函数,函数体内没有任何代码,写入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(a)

# print(b)

# print(c)

# print(d)

"""

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

b [1,2,4,5,['b','c','d'],5]

c [1,2,4,5,['b','c','d']]

d [1,2,4,5,['b','c']]

"""

#16.用python实现9*9乘法表

# for x in range(1,10):

# for y in range(1,10):

# print(f"{x}*{y}={x*y}")

#17.用python显示一个斐波那契数列

# def feibo(n):

# if n==1 or n==2:

# return 1

# return feibo(n-1) + feibo(n-2)

#

# for i in range(1,20):

# print(feibo(i))

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

# a = [1,1,2,2,3,3]

# a = list(set(a))

# print(a)

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

# f = open("/etl/log.txt","r",encoding="utf-8")

# for i in f:

# print(i)

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

#字典

#21.lambda关键字的作用?

#定义一个匿名函数

#22.`*arg`和`**kwarg`作用?

"""

他们是动态位置参数和动态关键字参数,用来接收函数传参时多余的参数

"""

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

#定义变量时前面加global

#24.filter、map、reduce的作用?

"""

filter为过滤函数

map;映射函数

reduce:计算数据

"""

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

"""

匿名函数就是没有定义函数名的函数

匿名函数的作用:可以简化代码,将结果作为参数返回时更加方便

"""

#26.Python递归的最大层数?

"""

官方解释为1000,实际测试为996-997

"""

#27.什么是迭代器?什么是可迭代对象?

"""

具有__iter__()方法的就是一个可迭代对象

具有__iter__()和__next__()两个方法的就是迭代器

"""

#28.什么是生成器?

"""

生成器本质就是一个迭代器,是程序员自己写的一种迭代器,有send方法就是一个生成器

"""

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

"""

装饰器就是在不修改源代码及其调用方式的基础上,对其进行添加功能

"""

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

"""

通过字符串操作对象的属性和方法

"""

#31.写一个普通的装饰器。

# def warpper(f):

# def inner():

# print("before")

# f()

# print("ok")

# return inner

# @warpper

# def func():

# print("被装饰的函数")

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

# def auth(argv):

# def wrapper(func):

# def inner(* args, **kwargs):

# if argv:

# print("我加上功能了!")

# func(*args, **kwargs)

# else:

# func(*args, ** kwargs)

# return inner

# return wrapper

#

# @auth("hahaha")

# def foo():

# print("这是一个点燃")

# foo()

#33.求结果

# def num():

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

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

#[6, 6, 6, 6]

#34.def(a, 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)

"""

v1 [1,3]

v2 [10,20,2]

v3 [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)

"""

v1 [1]

v2 [10,20,2]

v3 [1,3]

"""

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

# def ip_z(msg):

# if msg:

# msg = msg.strip().split('.')

# for i in range(len(msg)):

# i = str(bin(int(msg[i])))[2:]

# i += i.rjust(8,"0")

# i += i

# return int(i,2)

# else:

# return "请重新输入"

# msg = input("输入ip地址")

# print(ip_z(msg))

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

# import os

# def getallsize(pathvar):

# size = 0

# lst = os.listdir(pathvar)

# for i in lst:

# pathvar2 = os.path.join(pathvar,i)

# if os.path.isfile(pathvar2):

# size += os.path.getsize(pathvar2)

# elif os.path.isdir(pathvar2):

# size += getallsize(pathvar2)

# return size

#39.求结果

# import math

# print (math.floor(5.5))

#5

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

"""

reduce 计算数据

wraps 在装饰器中使用,保留原来函数的属性

"""

#41.re的match和search区别?

"""

match:从头开始查找

search:从任意位置开始匹配查找

"""

#42.用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别?

"""

. 除了 的任意字符

* 量词,代表匹配0次或者多次,任意个

.* 贪婪匹配

.*? 非贪婪匹配

"""

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

# import random

# # random.random() #随机获取 0<= x < 1

# # random.randrange() #随机获取指定范围中的整数,用法上同range

# # random.uniform() #随机获取指定范围中的小数

#44.super的作用?

"""

用来解决多继承之间复杂的调用关系使用super

在多继承中,如果出现了多个同名方法

super在调用的时候,会按照mro列表的继承顺序依次调用

类.mro() = > lst

"""

#45.双下划线和单下划线的区别?

"""

封装: 公有public 私有private 受保护的protected

私有: 只能在当前这个类里面使用,不能再子类或者在类外使用

受保护的: 可以在当前这个类或者子类里使用,不能再类外使用

约定俗成在该变量前面加上一个下划线_ , 就表示受保护了

"""

#46.@staticmethod和@classmethod的区别?

"""

一个静态方法,一个类方法

一个静态方法:(无论是对象还是类,都可以调用,不会默认传递任何参数)

一个类方法 :(无论是对象还是类,都可以调用,会默认传递类这个参数)

"""

#47.实现一个单例模式(加锁)。

# from threading import Lock

# class MyClass(object):

# __obj = None

# lock = Lock()

# def __new__(cls,*args,**kwargs):

# with cls.lock:

# if not cls.__obj:

# cls.__obj = object.__new__(cls)

# return cls.__obj

# obj1 = MyClass()

# obj2 = MyClass()

# print(obj1,obj2)

#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)

"""

111

121

323

"""

#50.参考下面代码片段

# class Context:

# # pass

# #

# # with Content() as ctx:

# # ctx.do_something()

# # 请在Context类下添加代码完成该类的实现

# 面向对象的上下文管理是with语法的具体实现

# class Context():

# def __enter__(self):

# return self

# def __exit__(self, exc_type, exc_val, exc_tb):

# # 相当于在最后,执行了文件的关闭操作,fp.close()

# print("abc123")

# def do_something(self):

# print(1111)

#

# with Context() as ctx:

# ctx.do_something()

# print(ctx)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值