java全栈自动机测试_Python全栈自动化面试大厂大纲题

昨天说今天更新,原本今天不想更新的,但是小编是个不愿“听话”的人,当我的身体发出今天休息指令时,我违背了这项指令,于是就会出现bug,可这种bug出现本身就是一种错误。

今天是入秋来第一天,来杯奶茶

4a8686b6c2c1eb077f4263291d557a81.png

别人有的你也要有

e573373519f9c1b6f8a598e9d54be270.png

3408b864684488d9339e42b498ebd95e.png

不客气

等大家喝完奶茶再跟大家分享一些曾经遇到过的测试面试题,希望给大家带来帮助。

1、python中的装饰器?装饰器的作用?

装饰器是修饰其他函数的功能的函数,他们有助于让我们的代码更简短。

装饰器本质上是一个 Python函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数/类对象。

它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验

等场景,装饰器是解决这类问题的绝佳设计。有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码到装饰器中并继续重用。

概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。

2、python是否支持多重继承?

在Python中是支持多重继承的,也就是我们可以为一个类同时指定多个父类。可以在类名的()后边添加多个类,来实现多重继承。

多重继承,会使子类同时拥有多个父类,并且会获取到所有父类中的方法。

在没有特殊的情况,应该尽量避免使用多重继承,因为多重继承会让我们的代码过于复杂。如果多个父类中有同名的方法,则会先在第一个父类中寻找,然后找第二个,

最后找第三个。前边父类的方法会覆盖后边父类的方法

3、pytest框架中如何实现app自动化测试只启动一次app?

@pytest.fixture装饰器定义一个函数,可以在pytest框架中被调用,其中默认scope的作用域是function,其它还有:session、module 、class;

如果想整个框架的测试用例执行只启动一次app就采用session级别的,如果是指定那些模块的测试用例执行则使用module、单个测试类就是class、function默认是测试用例方法级别

4、Python 中的字符串格式化的方法有哪些?f-string 格式化知道吗?

1.%格式符

2.str.format()

3.f-Strings

f-string是2015年python 3.6 根据PEP 498新添加的一种字符串格式化方法,f-string实际上是在运行时计算的表达式,而不是常量值。在Python源代码中,f-string是一个文字字符串,前缀为’f’,其中包含大括号内的表达式。表达式会将大括号中的内容替换为其值。

5、编写函数的四个原则是什么?

一:函数设计要尽量短小,嵌套层次不宜过深。

二:参数个数不宜太多。

三:函数参数设计应该考虑向下兼容

四:一个函数只做一件事,尽量保证函数语句粒度的一致性

6、Python 中如何避免内存泄漏?

有 del() 函数的对象间的循环引用是导致内存泄漏的主凶。不使用一个对象时使用:delobject 来删除一个对象的引用计数就可以有效防止内存泄漏问题。通过Python 扩展模块 gc 来查看不能回收的对象的详细信息。可以通过 sys.getrefcount(obj) 来获取对象的引用计数,并根据返回值是否为 0 来判断是否内存泄漏。

7、如何在python中实现多线程和多进程?

一个线程就是一个轻量级进程,多线程能让我们一次执行多个线程。python是多线程语言,其内置有多线程工具包。python中GIL(全局解释器锁)确保一次执行单个线程。

当程序中需要处理几百上千个进程时,仅仅用Process是不现实的,因为手动去规划进程过于繁琐,所以此时你需要另外的工具去管理这些进程。multiprocessing提供了一个Pool的工具。

Pool可以提供指定数量的进程供用户进行调用,当新的请求发到进程池时,如果此时进程池还没有满,那么Pool会自动创建一个进程去处理这个请求,否则,这个请求需要等待,直到进程池有新的空间释放。另外Pool与Process不同的地方是前者可以有返回值,而Process需要借助其他对象对数据进行存储。

8、列表数据如何筛选,筛选出符合要求的数据?

1、通用方式:通过迭代方式,从第一个开始判断,符合条件留下,不符合的丢弃。

2、filter方式:filter(function or None, iterable)–> filter object,该函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,需要用list转换回列表。

3、列表解析。

记住,别人有的你也要有!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Python实现DFA的示例代码: ```python class DFA: def __init__(self, alphabet, states, start_state, accept_states, transitions): self.alphabet = alphabet self.states = states self.start_state = start_state self.accept_states = accept_states self.transitions = transitions def run(self, input_string): current_state = self.start_state for char in input_string: if char not in self.alphabet: return False current_state = self.transitions[current_state][char] return current_state in self.accept_states # 示例用法 alphabet = {'0', '1'} states = {'q0', 'q1', 'q2'} start_state = 'q0' accept_states = {'q2'} transitions = { 'q0': {'0': 'q1', '1': 'q0'}, 'q1': {'0': 'q2', '1': 'q0'}, 'q2': {'0': 'q2', '1': 'q2'} } dfa = DFA(alphabet, states, start_state, accept_states, transitions) print(dfa.run('1010')) # 输出 True ``` 以下是Java实现DFA的示例代码: ```java import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; public class DFA { private final Set<Character> alphabet; private final Set<String> states; private final String startState; private final Set<String> acceptStates; private final Map<String, Map<Character, String>> transitions; public DFA(Set<Character> alphabet, Set<String> states, String startState, Set<String> acceptStates, Map<String, Map<Character, String>> transitions) { this.alphabet = alphabet; this.states = states; this.startState = startState; this.acceptStates = acceptStates; this.transitions = transitions; } public boolean run(String inputString) { String currentState = startState; for (char c : inputString.toCharArray()) { if (!alphabet.contains(c)) { return false; } currentState = transitions.get(currentState).get(c); } return acceptStates.contains(currentState); } // 示例用法 public static void main(String[] args) { Set<Character> alphabet = new HashSet<>(); alphabet.add('0'); alphabet.add('1'); Set<String> states = new HashSet<>(); states.add("q0"); states.add("q1"); states.add("q2"); String startState = "q0"; Set<String> acceptStates = new HashSet<>(); acceptStates.add("q2"); Map<String, Map<Character, String>> transitions = new HashMap<>(); Map<Character, String> q0Transitions = new HashMap<>(); q0Transitions.put('0', "q1"); q0Transitions.put('1', "q0"); transitions.put("q0", q0Transitions); Map<Character, String> q1Transitions = new HashMap<>(); q1Transitions.put('0', "q2"); q1Transitions.put('1', "q0"); transitions.put("q1", q1Transitions); Map<Character, String> q2Transitions = new HashMap<>(); q2Transitions.put('0', "q2"); q2Transitions.put('1', "q2"); transitions.put("q2", q2Transitions); DFA dfa = new DFA(alphabet, states, startState, acceptStates, transitions); System.out.println(dfa.run("1010")); // 输出 true } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值