python技术面试题(一)

简介: python技术面试题(一)

每日分享

If you change nothing, nothing will change

如果你什么也不去改变,那么没什么会改变。

小闫语录

想要一份好工作,那就好好学习扎实自己;想要气质,那就多读读书;想要钱,那就别怕吃苦撸起袖子加油干。你看,只要你想,总是有路去实现。前提是你想,然后付出行动,否则什么都不会得到。想要生活现状有所改变,请先去为改变做些什么。



python技术面试题(一)

面试题

1.1Python中的幂运算

在python中运算是由两个 **星号运算的,实例如下:

>>> a = 2 ** 2
>>> a
4

我们可以看到2的平方输出结果为4。

那么 ^指的是什么呢?我们用代码进行演示:

>>> 1 ^ 0
1
>>> 0 ^ 1
1
>>> 1 ^ 1
0
>>> 0 ^ 0
0
>>> 2 ^ 2
0

作为python的运算符时, ^表示bitwise XOR(按位操作符,按位异或)

a ^ b 对于每一个比特位,当两个操作数相应的比特位有且只有一个1时,结果为1,否则为0.

1.1.1面试题

a=1,b=2,不用中间变量交换a和b的值?

答:

>>> a=1
>>> b=2
>>> a=a^b
>>> b=b^a
>>> a=a^b
>>> a
2
>>> b
1

注意这是一种比较巧的办法,当然本题的答案不唯一,最简单的答案

a,b=b,a

此处为了演示上面的异或,提供一种巧的办法。

解析

2用二进制表示为10,1用二进制表示为1。所以题中转换为二进制相当于a=1,b=10。如下:

a=01
b=10

首先a=a^b(按照相同取0,不同取1),注意两个二进制位上数值的变化规律:

a=01
b=10
------
a=11

然后进行b=b^a,结果如下:

b=10
a=11
------
b=01

最后进行a=a^b,结果如下:

a=11
b=01
------
a=10

最后的结果就是a=10,b=01。和最开始的a=1,b=10相比较,确实是交换了两个变量的值。

1.2面试题之基础

1.代码中要修改不可变数据会出现什么问题?抛出什么异常?

答:代码不会正常运行,抛出TypeError异常。

2.print调用python中底层的什么方法?

答:print方法默认调用 sys.stdout.write方法,也就是往控制台打印字符串。

3.简述你对input()函数的理解?

答:在python3中,input获取用户输入,不论用户输入什么,获取到的都是字符串类型。

在python2中,有rawinput()和input(),rawinput()和python3中的input作用是一样的,input有点区别,就是输入的是什么数据类型,获取到的就是什么数据类型的。

4.python2中range和xrange的区别?

答:两者用法相同,不同的是range返回的结果是一个列表,而xrange的结果是一个生成器;range直接开辟一块内存空间来保存列表,xrange是一边循环一边使用,是有使用的时候才会开辟内存空间,所以当列表很长时,使用xrange性能要更好一点。

5.4G内存怎么读取一个5G的数据?

答:可以通过生成器,分多次读取,每次读取数量相对少的的数据进行处理,处理结束后再读取后面的数据。

还可以通过Linux命令split切割成小文件,然后再对数据进行处理,此方法效率比较高,可以按照行数切割,可以按照文件大小切割。

1.3文件读取的一些知识点

1.在文件读取的时候要考虑到指针的位置,如果文件没有关闭,那么我们第二次读取的时候将从第一次读取结束的位置开始。

2.控制文件指针的方法:

方法一:重新打开文件,每次执行只读方式的时候都是从文件开始进行读取的。

方法二:可以手动的将文件的指针移动到文件的开头:

file_name.seek(0.0)

file.seek(off, whence=0):从文件开始移动off个操作标记(文件指针),正数代表往结束方向移动,负数代表往开始方向移动。如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。

1.3.1Linux命令split

该指令代表的是将大文件切割成较小的文件,在默认情况下按照每1000行切割成一个小文件。

语法

split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]

参数解释

-<行数>: 指定每多少行切成一个小文件

-b<字节> : 指定每多少字节切成一个小文件

--help: 在线帮助

--version: 显示版本信息

-C<字节> : 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性

[输出文件名]: 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号

-a, --suffix-length=N 指定输出文件名的后缀,默认为2个

-d, --numeric-suffixes 使用数字代替字母做后缀

-l, --lines=NUMBER NUMBER 值为每一输出文档行数大小

使用

split -l 2482 ../BLM/BLM.txt -d -a 4 BLM_

将 文件 BLM.txt 分成若干个小文件,每个文件2482行(-l 2482),文件前缀为BLM_ ,系数不是字母而是数字(-d),后缀系数为四位数(-a 4)

1.3.2Linux命令wc

读取文件有多少行

wc -l <file_name>

1.3.3Linux命令>>和>

>代表覆盖文件内容。

>>代表的是在文件后面追加内容。

相关文章
|
6天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
19 2
|
12天前
|
算法 Python
Python图论探索:从理论到实践,DFS与BFS遍历技巧让你秒变技术大牛
图论在数据结构与算法中占据重要地位,应用广泛。本文通过Python代码实现深度优先搜索(DFS)和广度优先搜索(BFS),帮助读者掌握图的遍历技巧。DFS沿路径深入搜索,BFS逐层向外扩展,两者各具优势。掌握这些技巧,为解决复杂问题打下坚实基础。
24 2
|
13天前
|
开发框架 开发者 Python
探索Python中的装饰器:技术感悟与实践
【10月更文挑战第31天】 在编程世界中,装饰器是Python中一种强大的工具,它允许我们在不修改函数代码的情况下增强函数的功能。本文将通过浅显易懂的方式,带你了解装饰器的概念、实现原理及其在实际开发中的应用。我们将一起探索如何利用装饰器简化代码、提高可读性和复用性,同时也会分享一些个人的技术感悟,帮助你更好地掌握这项技术。
30 2
|
18天前
|
数据采集 Web App开发 iOS开发
如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?
本文介绍了使用 Python 爬虫技术获取淘宝天猫商品价格信息的两种方法。方法一使用 Selenium 模拟浏览器操作,通过定位页面元素获取价格;方法二使用 Requests 和正则表达式直接请求页面内容并提取价格。每种方法都有详细步骤和代码示例,但需注意反爬措施和法律法规。
|
18天前
|
数据采集 存储 Web App开发
利用Python 的爬虫技术淘宝天猫销量和库存
使用 Python 爬虫技术获取淘宝天猫商品销量和库存的步骤包括:1. 安装 Python 和相关库(如 selenium、pandas),下载浏览器驱动;2. 使用 selenium 登录淘宝或天猫;3. 访问商品页面,分析网页结构,提取销量和库存信息;4. 处理和存储数据。注意网页结构可能变化,需遵守法律法规。
|
19天前
|
数据库 开发者 Python
“Python异步编程革命:如何从编程新手蜕变为并发大师,掌握未来技术的制胜法宝”
【10月更文挑战第25天】介绍了Python异步编程的基础和高级技巧。文章从同步与异步编程的区别入手,逐步讲解了如何使用`asyncio`库和`async`/`await`关键字进行异步编程。通过对比传统多线程,展示了异步编程在I/O密集型任务中的优势,并提供了最佳实践建议。
16 1
|
27天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
1月前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
|
1月前
|
网络协议 安全 Java
难懂,误点!将多线程技术应用于Python的异步事件循环
难懂,误点!将多线程技术应用于Python的异步事件循环
61 0
|
1月前
|
Java C++ Python
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
【面试宝典】深入Python高级:直戳痛点的题目演示(下)