文因互联-软件工程师
请列举Python2与Python的区别,请将下面的Python2的代码转换成Python3。
代码:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return '({}, {})'.format(self.x, self.y)
points = [Point(9, 2), Point(1, 5), Point(2, 7), Point(3, 8), Point(2, 5)]
sorted_points = sorted(points,lambda (x0, y0), (x1, y1): x0 - x1 if x0 != x1 else y0 - y1,lambda point: (point.x, point.y))
# 预期结果为(1, 5), (2, 5), (2, 7), (3, 8), (9, 2)
print ', '.join(map(str, sorted_points))
区别:
1.性能:
Py3.1性能比Py2.5慢15%,还有很大的提升空间
2.编码
Py3.X源码文件默认使用utf-8编码
3.语法
1)去除了<>,全部改用!=
2)去除``,全部改用repr()
3)关键词加入as和with,还有True,False,None
4.字符串和字节串
1)现在字符串只有str一种类型,但它跟2.x版本的unicode几乎一样。
5.数据类型
1)Py3.X去除了long类型,现在只有一种整型——int,但它的行为就像2.X版本的long
2)新增了bytes类型,对应于2.X版本的八位串
3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃。同时去掉的还有
dict.has_key(),用 in替代
6.面向对象
1)引入抽象基类(AbstraactBase Classes,ABCs)。
2)容器类和迭代器类被ABCs化
修改后的代码:
class Point(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return '({}, {})'.format(self.x, self.y)
points = [Point(9, 2), Point(1,5), Point(2, 7), Point(3, 8), Point(2, 5)]
sorted_points = sorted(points,key=lambda p:(p.x,p.y))
print(', '.join(map(str, sorted_points)))
请用 python 写一个正则表达式实现电话号码的提取功能,下面是需要满足条件:
- a. 匹配(123)-456-7890 和 123-456-7890
- b. 不匹配(123-456-7890 和 123)-456-7890
代码:
import re
def get_tel(text):
pattern = r'\(\d{3}\)-\d{3}-\d{4}|\d{3}-\d{3}-\d{4}'
tels = re.search(pattern,text)
if tels:
tels = tels.group()
print('匹配到的电话号码为:',tels)
text = input('请输入字符串:')
get_tel(text)
描述 python 开发中,协程,线程和进程的区别,请将下面代码改成可以在多核 CPU 上并行执行的程序。
代码:
import os
import sys
def dump_file(input_dir):
if not os.path.exists(input_dir):
print('dir {} not exists'.format(input_dir))
return
path_list = [os.path.join(input_dir, f).strip('\n') for f in os.listdir(input_dir)]
file_path_list = filter(lambda file_path: os.path.isfile(file_path), path_list)
for file_path in file_path_list:
print('{}:{} size:{}'.format(os.getpid(), file_path, os.path.getsize(file_path)))
if __name__ == '__main__':
if len(sys.argv) > 1:
dump_file(sys.argv[1])
else:
dump_file(os.getcwd())
- 进程是系统分配系统资源的最小单位,进程之中可以有多个线程,一个进程中的所有资源共享,进程之间资源不会共享;
- 线程是系统进行任务调度的最小单位,一个进程中的线程共享该进程的系统资源,线程是轻量级的进程;
- 协程又称微线程,轻量级线程,执行具有原子性,执行需要程序员来调用度,可以执行效率高
修改后代码:
import os
import sys
import multiprocessing
def dump_file(input_dir):
if not os.path.exists(input_dir):
print('dir {} not exists'.format(input_dir))
return
path_list = [os.path.join(input_dir, f).strip('\n') for f in os.listdir(input_dir)]
file_path_list = filter(lambda file_path: os.path.isfile(file_path),path_list)
for file_path in file_path_list:
print('{}:{} size:{}'.format(os.getpid(), file_path,os.path.getsize(file_path)))
if __name__ == '__main__':
pool_size = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes=pool_size,)
for i in range(pool_size):
if len(sys.argv) > 1:
pool.apply_async(dump_file, args=(sys.argv[1],))
else:
pool.apply_async(dump_file, args=(os.getcwd(),))
pool.close()
pool.join()
假设这里有一台服务器地址为192.168.0.2,开放端口为6623,如何连接到远程服务器操作?
SSH -p 6623 root@192.168.0.2
找出当前目录下2天内新创建的多有json文件
find / -name “*.json” -a -mtime +2
如何查看(监控)CPU使用情况,硬盘读写情况以及网络读写情况?
- ①可以调用系统资源监视器
- ②安装glances程序,使用glances名可以直接查看
如何设置一个程序在Linux启动的时候自动运行?
在/etc/rc.local 中最后一行添加要执行程序的绝对路径
简述在浏览器中输入网址到网页内容展现出来,经历了一个什么样的过程。
- ①浏览器向DNS服务器发起域名解析请求,域名解析服务器返回对应的ip地址
- ②浏览器向解析后的ip地址发起资源请求,服务器查询该请求的url资源,并向客户端浏览器返回该资源的源代码
- ③浏览器接收到该页面资源后检查页面是否用引用资源,若有则再次发起对该引用的请求,并将请求到的资源渲染输出到显示器,最终在显示器上显示出一个请求到的完整页面
请简单描述您对人工智能知识图谱的了解。
人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学
人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等
实际应用在机器视觉,指纹识别,人脸识别,视网膜识别,虹膜识别,掌纹识别,专家系统,自动规划,智能搜索,定理证明,博弈,自动程序设计,智能控制,机器人学,语言和图像理解,遗传编程等
涉及的学科哲学和认知科学,数学,神经生理学,心理学,计算机科学,信息论,控制论,不定性论
请简单描述您未来5年的规划
在未来的1-2年内我能够在岗位沉淀下来,称为技术的中坚力量,在不断的努力后,争取晋升,在未来的3-5年内,如果公司认为我的话,可以发展称为公司的管理层或者架构师, 同时我也希望自己能够在企业的平台上得到进一步的职业能力提升