当前位置: 首页 > news >正文

python面试题与知识点_python技术面试题(一)

正文共: 2383字 5图

预计阅读时间: 6分钟

每日分享

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

1.3.3Linux命令>>和>

>代表覆盖文件内容。

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

优质文章推荐:

相关文章:

  • css覆盖规则_CSS元素选择器是怎样运作的?
  • bagging和时间序列预测_时间序列预测与指数平滑法
  • python领域驱动_浅谈“领域驱动设计”
  • http status 404 – 未找到_[SEO名词]网站404页面是什么?
  • pythonsqlite锁定_python – 可以在NFS文件系统上锁定sqlite文件吗?
  • python如何调用matlab_[Python-MATLAB] 在Python中调用MATLAB的API
  • 语料库与python应用_语料库与Python应用/语料库翻译学文库
  • 多个id如何用js_将多个MSA连超级高铁网络,如何用最少的轨道连接所有MSA?
  • python上传excel文件_利用django如何解析用户上传的excel文件
  • js悬浮二级菜单代码_纯CSS实现简单二级导航下拉效果
  • microbit python扩展_【micro:bit扩展】如何用慧编程扩展设计器为 micro:bit 编写扩展...
  • boost原理与sklearn源码_从sklearn源码简析GBDT
  • 信息隐藏将txt文件合并到jpg文件中_GIS工作中让你事半功倍,在数据处理中常用的小技巧...
  • android欢迎界面引导页_uni-app: 引导页功能如何实现?
  • 六位小数的字符串怎么转化成double类型而不损失精度?_C# 一次数据类型强转失败的翻车原因分析...
  • python3.6+scrapy+mysql 爬虫实战
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【译】理解JavaScript:new 关键字
  • 03Go 类型总结
  • 3.7、@ResponseBody 和 @RestController
  • 345-反转字符串中的元音字母
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • ES6语法详解(一)
  • GraphQL学习过程应该是这样的
  • Javascript弹出层-初探
  • Java比较器对数组,集合排序
  • Java-详解HashMap
  • text-decoration与color属性
  • Vue.js 移动端适配之 vw 解决方案
  • Vue2 SSR 的优化之旅
  • 工程优化暨babel升级小记
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 全栈开发——Linux
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • const的用法,特别是用在函数前面与后面的区别
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • # Java NIO(一)FileChannel
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (1)(1.11) SiK Radio v2(一)
  • (1)bark-ml
  • (8)STL算法之替换
  • (k8s中)docker netty OOM问题记录
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (论文阅读30/100)Convolutional Pose Machines
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .form文件_一篇文章学会文件上传
  • .net core Swagger 过滤部分Api
  • .net Signalr 使用笔记
  • .net 获取url的方法