【python】Python学到什么程度可以面试工作(解答一)_怎么回答自己的python学到什么层度(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

dict # 字典

  1. 简述with方法打开处理文件帮我我们做了什么?
  • with语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的清理操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等;
  • with语句即上下文管理器,在程序中用来表示代码执行过程中所处的前后环境。上下文管理器:含有__enter____exit__方法的对象就是上下文管理器。
  • enter():在执行with语句之前,首先执行该方法,通常返回一个实例对象,如果with语句有as目标,则将对象赋值给as目标。
  • exit():在执行with语句结束后,自动调用__exit__()方法,用户释放资源,若此方法返回布尔值True,程序会忽略异常
  • 使用环境:文件读写、线程锁的自动释放等。

with context_expression [as target(s)]:
with-body

这里context_expression要返回一个上下文管理器对象,该对象并不赋值给as子句中的target(s),而是会将上下文管理器的__enter__()方法的返回值赋值给target(s)

不太清楚的可以参考链接:深入理解 Python 中的上下文管理器

  1. Python的可变和不可变数据类型?
  • 不可变数据类型:即数据被创建之后,数据的值将不再发生改变,有数值、字符、元祖类型;
  • 可变数据类型:数据别创建之后,数据的值可以发生变化,有列表、字典、集合类型。
  1. Python获取当前日期?

-*- coding: UTF-8 -*-

import datetime
import time

if name == “__main__”:
print(time.time()) # 时间戳
print(time.strftime(“%Y-%m-%d %H:%M:%S %w”, time.localtime())) # 年月日时分秒
print(datetime.datetime.now()) # 年月日时分秒

  1. 统计字符串每个单词出现的次数。

def word_amount(sentence):
split_list = sentence.split()
dict_result = {}
for word_name in split_list:
if word_name not in dict_result.keys():
dict_result[word_name] = 1
else:
dict_result[word_name] += 1
return dict_result

if name == ‘__main__’:
sentence = “I can because i think i can”
dict_result = word_amount(sentence)
print(dict_result)

或者:

if name == ‘__main__’:
sentence = “I can because i think i can”
result = {word: sentence.split().count(word) for word in set(sentence.split())}
print(result)

或者:

from collections import Counter

if name == ‘__main__’:
sentence = “I can because i think i can”
counts = Counter(sentence.split())
print(counts)

  1. 用python删除文件和用linux命令删除文件方法。

import os
os.remove(“demo.txt”)

rm demo.txt

  1. 写一段自定义异常代码?

class printException(Exception):
pass

def testRaise():
raise printException(‘printErr’)

if name == ‘__main__’:
try:
testRaise()
except printException, e:
print e

  1. 举例说明异常模块中try except else finally的相关意义。

-*- coding: UTF-8 -*-

def read_filedata(file_name):
file_obj = “”
try:

需要检测的异常代码片段

file_obj = open(file_name, “r”)
result_data = file_obj.read()
except IOError, e:

发生“IOError”异常进行处理的代码片段

file_obj = “文件不存在:”+ str(e)
else:

没有引发“IOError”异常执行的代码片段,返回读取到的数据

return result_data
finally:

不管有没有引发错误都会执行的代码片段,isinstance()用于判断一个数据类型

if isinstance(file_obj, str):
return file_obj
elif isinstance(file_obj, file):
file_obj.close()
else:
return “未知错误,请检查您的代码…”

if name == ‘__main__’:
result = read_filedata(“abc.txt”)
print(result)

  1. 遇到 bug 如何处理?
  • 首先查看报错信息,根据报错信息找到相应代码,通常一般的数据结构或者算法错误只要找到报错代码就可以顺利解决;
  • 如果遇到暂时不能解决的错误先不要慌,我们可以使用编译器的Debug模式或者自己在代码中加注断点进行代码排查;
  • 如果依然不能解决bug,我们可以拷贝报错信息,在搜索引擎中进行搜索。 没有人写代码不出bug,如果你在一个bug上耗费时间超过半小时,可以与其他同事探讨(注意节制,可能有些费同事);
  • 另辟蹊径:方法总比困难多,在进行快速开发时,我们应该优先实现功能而不是拘泥于运行效率,所以遇到一些暂时不能解决的BUG可以考虑另外的实现方法。

语言特性

  1. 谈谈对Python的了解和其他语言的区别?

Python是一门语法简洁优美,功能强大无比,应用领域非常广泛,具有强大完备的第三方库的一门强类型动态,可移植,可扩展,可嵌入的解释型编程语言。

强类型语言、弱类型语言的区别:

  • 如果语言经常隐式地转换变量的类型,那这个语言就是弱类型语言,如果很少会这样做,那就是强类型语言。Python很少会隐式地转换变量的类型,所以Python是强类型的语言。
  • 强类型语言和弱类型原因其判断的根本是是否会隐式进行语言类型转变。强类型原因在速度上可能略逊于弱类型语言,但是强类型定义语带来的严谨性又避免了不必要的错误
  • 强类型语言包括:Java、.net、Python、C++等语言。其中Python是动态语言,是强类型定义语言,是类型安全的语言,Java是静态语言,是强类型定义语言,也是类型安全的语言;弱类型语言包括:VB,PHP,JavaScript等语言。其中VBScript是动态语言,是一种类型不安全的原因。

动态语言、静态语言的区别:

  • 动态类型语言动态性语言是指在运行期间才去做数据类型检查的语言,也就是说动态类型语言编程时,永远不用给任何变量指定数据类型,该语言会在第一次赋值给变量时,在内部将数据类型记录下来**。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
  • 静态类型语言:静态类型语言与动态类则刚好相反,它的数据类型在编译期间检查,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他静态语言还有C#、Java等。
  • 对于动态语言与静态语言的区分,其根本在于数据类型是在运行期间检查还是在编译期间检查

编译型语言、解释型语言的区别:

  • 编译型语言需要将一段程序直接翻译成机器码(对于C/C++这种非跨平台的语言)或者中间码(Java这种跨平台语言,需要虚拟机再将中间码印射成机器码)。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件。
  • 解释型语言使用解释器将源码逐行解释成机器码并立即执行,不会进行整体性的编译和链接处理,相比编译型语言省了道工序。
  • 一个像是吃饭等菜都上全了再开动,一个像是吃火锅,边涮边吃,时机不一样。
  • 解释型语言的优点:跨平台容易,只需提供特定平台的解释器;缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
  1. 简述解释型和编译型编程语言?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-A3h0tIcV-1713177024687)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值