字节跳动高级测试工程师面试问题—亲测

字节跳动高级测试工程师面试问题—亲测,第1张

1测试微信的朋友圈功能
功能测试(文字、视频、文字长度、大小、可见、位置、提醒、浏览、长文字处理,评论)

界面易用性测试

中断测试

网络测试、弱网测试

兼容性测试

安全测试

性能测试(服务器、客户端、压力稳定性测试)

2函数重载

python不支持函数重载,用继承可实现函数重写,具体自行百度

3redis数据类型

string,hash,List,set,sorted set

4sql锁----忘记当时问我什么了

5liuux修改文件中的指定数据

sed -i 's/book/books/g' file  匹配文件中每一行的第一个book替代为books

sed 's/book/books/g' file  替代文件中每一行的所有匹配

6深拷贝和浅拷贝有什么区别?

浅拷贝,复制的对象变了,但是复制对象的元素的地址复制完是没有改变的,当改变了复制对象的可变元素时,复制出的元素也跟着变化

深拷贝,复制的的对象变了,复制后的元素地址可变元素如list的地址变化(复制对象和拷贝对象所有的可变元素地址没有相同的),字符等不会变化,改变可变元素的值,复制后的值不会变化

7三次握手,四次挥手

8>一、您在从事性能测试工作时,是否使用过一些测试工具如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。

用过LoadRunner。下面提供一个完整测试实例,可参考(也可以选择其中一部分作为答案)

该方案是针对某公司试题库的性能测试。该试题库是用来对公司内部员工培训结果的一个考核。试题库在公司内部web服务器上,假设开设50个账号和密码可供50个考生同时参加考试。要求,每台机器只能由一个用户使用,每个用户只能使用各自不同的账号登录考试系统,做完题目后,要求提交考试结果,若在制定的时间内不提交,则系统强制提交考试结果。

但是,一般测试部门不可能有50台机器同时进行测试的。所以,可以借Loadrunner751模拟IP地址,修改脚本来协助测试。但是,为了保证测试结果,建议搜罗公司中所有可用的机器进行复测,因为有时候是不可以完全信赖工具的。

现场测试环境

硬件:50台PC机,Web服务器

软件:Loadrunner70,Win2000,IE50和IE60

人员:质控部2人,执行现场测试

项目部22人,提供现场环境

技术部各1人,提供技术支持

测试要求

50个用户拥有独立IP地址,不同的用户及密码登录,试题完成后各自同时提交。

测试内容

50个用户以不同的用户名和密码登录试题库。试题完成后,提交考试结果。测试考试结果是否能正常提交以及正确评分。

测试方案

1、完全20台实际的PC机进行现场测试。

(1) 准备工作,并做计划。第一轮测试执行三遍,设定用户考试内容全部同时提交,第一遍全部使用IE50,第二遍10台使用IE50,10台使用IE60,第三遍全部使用IE60

(2) At 9:00 ,20个用户同时登录系统

(3) At 9:05 ,20个用户同时全部提交

(4) 分别记录第一轮测试(三遍)的结果

(5) 第二轮测试准备工作,设定15个用户考试内容同时提交,另外5个用户延时5分钟提交,全部使用IE50

(6) At 9:15 ,20个用户同时登录系统

(7) At 9:20 ,15个用户同时提交

(8) At 9:25 ,剩余5个用户同时提交

(9) 记录第二轮测试结果

(10) 第三轮测试准备工作,设定15个用户考试内容同时提交,另外5个用户延时5分钟提交,全部使用IE60

(11) At 9:15 ,20个用户同时登录系统

(12) At 9:20 ,15个用户同时提交

(13) At 9:25 ,剩余5个用户同时提交

(14) 记录第三轮测试结果

(15) 第四轮测试准备工作,设定15个用户考试内容同时提交,另外5个用户延时5分钟提交,正常提交用户使用IE50,延时提交用户使用IE60

(16) At 9:15 ,20个用户同时登录系统

(17) At 9:20 ,15个用户同时提交

(18) At 9:25 ,剩余5个用户同时提交

(19) 记录第四轮测试结果

(20) 第五轮测试准备工作,设定15个用户考试内容同时提交,另外5个用户延时5分钟提交,正常提交用户使用IE60,延时提交用户使用IE50

(21) At 9:15 ,20个用户同时登录系统

(22) At 9:20 ,15个用户同时提交

(23) At 9:25 ,剩余5个用户同时提交

(24) 记录第五轮测试结果

(25) 第六轮测试准备工作,设定15个用户考试内容同时提交,另外5个用户延时5分钟提交,正常提交用户其中10个使用IE50,5个使用IE60,延时提交用户使用IE50

(26) At 9:15 ,20个用户同时登录系统

(27) At 9:20 ,15个用户同时提交

(28) At 9:25 ,剩余5个用户同时提交

(29) 记录第六轮测试结果

(30) 第七轮测试准备工作,设定10个用户考试内容同时提交,另外10个用户分两次分别延时5分钟、15提交

(31) At 9:35 ,20个用户同时登录系统

(32) At 9:40 ,10个用户同时提交

(33) At 9:45 ,剩余的其中5个用户同时提交

(34) At 9:55 ,剩余的5个用户同时提交

(35) 记录第七轮测试结果,参见第二轮测试-第六轮测试过程分别对IE50和IE60的情况进行测试

(36) 第八轮测试准备工作,设定其中10个用户不提交,由系统强行提交

(37) At 10:10 ,20个用户同时登录系统 1 2 3 4 5 6

面试 的目的是确定面试者如何处理他们所选择的研究领域的问题,以及他们如何批判性地思考问题。下面我给大家带来2021面试网络工程师的题目参考,希望能帮助到大家!

Java多线程 面试题 目

1、什么是线程

线程是 *** 作系统 能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。

2、线程和进程有什么区别

线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。每个线程都拥有单独的栈内存用来存储本地数据。

3、如何在Java中实现线程

两种方式:javalangThread 类的实例就是一个线程但是它需要调用javalangRunnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承javalangThread 类或者直接调用Runnable接口来重写run() 方法 实现线程。

4、Java 关键字volatile 与 synchronized 作用与区别

Volatile:

它所修饰的变量不保留拷贝,直接访问主内存中的。

在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄存器)。为了性能,一个线程会在自己的memory中保持要访问的变量的副本。这样就会出现同一个变量在某个瞬间,在一个线程的memory中的值可能与另外一个线程memory中的值,或者main memory中的值不一致的情况。 一个变量声明为volatile,就意味着这个变量是随时会被其他线程修改的,因此不能将它cache在线程memory中。

synchronized:

当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。

一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。

二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。

三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有 其它 synchronized(this)同步代码块的访问将被阻塞。

四、当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。

五、以上规则对其它对象锁同样适用。

5、有哪些不同的线程生命周期

当我们在Java程序中新建一个线程时,它的状态是New。当我们调用线程的start()方法时,状态被改变为Runnable。线程调度器会为Runnable线程池中的线程分配CPU时间并且讲它们的状态改变为Running。其他的线程状态还有Waiting,Blocked 和Dead。

6、你对线程优先级的理解是什么

每一个线程都是有优先级的,一般来说,高优先级的线程在运行时会具有优先权,但这依赖于线程调度的实现,这个实现是和 *** 作系统相关的(OS dependent)。

我们可以定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线程前执行。线程优先级是一个int变量(从1-10),1代表最低优先级,10代表最高优先级。

7、什么是死锁(Deadlock)如何分析和避免死锁

死锁是指两个以上的线程永远阻塞的情况,这种情况产生至少需要两个以上的线程和两个以上的资源。

分析死锁,我们需要查看Java应用程序的线程转储。我们需要找出那些状态为BLOCKED的线程和他们等待的资源。每个资源都有一个唯一的id,用这个id我们可以找出哪些线程已经拥有了它的对象锁。

避免嵌套锁,只在需要的地方使用锁和避免无限期等待是避免死锁的通常办法。

8、什么是线程安全Vector是一个线程安全类吗

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。

一个线程安全的计数器类的同一个实例对象在被多个线程使用的情况下也不会出现计算失误。很显然你可以将集合类分成两组,线程安全和非线程安全的。Vector 是用同步方法来实现线程安全的, 而和它相似的ArrayList不是线程安全的。

9、Java中如何停止一个线程

Java提供了很丰富的API但没有为停止线程提供API。JDK 10本来有一些像stop(), suspend()和resume()的控制方法但是由于潜在的死锁威胁因此在后续的JDK版本中他们被弃用了,之后Java API的设计者就没有提供一个兼容且线程安全的方法来停止一个线程。

当run()或者 call()方法执行完的时候线程会自动结束,如果要手动结束一个线程,你可以用volatile 布尔变量来退出run()方法的循环或者是取消任务来中断线程。

10、什么是ThreadLocal

ThreadLocal用于创建线程的本地变量,我们知道一个对象的所有线程会共享它的全局变量,所以这些变量不是线程安全的,我们可以使用同步技术。但是当我们不想使用同步的时候,我们可以选择ThreadLocal变量。

每个线程都会拥有他们自己的Thread变量,它们可以使用get()set()方法去获取他们的默认值或者在线程内部改变他们的值。ThreadLocal实例通常是希望它们同线程状态关联起来是private static属性。

Kubernetes面试题汇总

1、什么是Kubernetes

Kubernetes是一个开源容器管理工具,负责容器部署,容器扩缩容以及负载平衡。作为Google的创意之作,它提供了出色的社区,并与所有云提供商合作。因此,我们可以说Kubernetes不是一个容器化平台,而是一个多容器管理解决方案。

2、Kubernetes与Docker有什么关系

众所周知,Docker提供容器的生命周期管理,Docker镜像构建运行时容器。但是,由于这些单独的容器必须通信,因此使用Kubernetes。因此,我们说Docker构建容器,这些容器通过Kubernetes相互通信。因此,可以使用Kubernetes手动关联和编排在多个主机上运行的容器。

3、什么是Container Orchestration

考虑一个应用程序有5-6个微服务的场景。现在,这些微服务被放在单独的容器中,但如果没有容器编排就无法进行通信。因此,由于编排意味着所有乐器在音乐中和谐共处,所以类似的容器编排意味着各个容器中的所有服务协同工作以满足单个服务器的需求。

4、Kubernetes如何简化容器化部署

由于典型应用程序将具有跨多个主机运行的容器集群,因此所有这些容器都需要相互通信。因此,要做到这一点,你需要一些能够负载平衡,扩展和监控容器的东西。由于Kubernetes与云无关并且可以在任何公共/私有提供商上运行,因此必须是您简化容器化部署的选择。

5、您对Kubernetes的集群了解多少

Kubernetes背后的基础是我们可以实施所需的状态管理,我的意思是我们可以提供特定配置的集群服务,并且集群服务将在基础架构中运行并运行该配置。

因此,正如您所看到的,部署文件将具有提供给集群服务所需的所有配置。现在,部署文件将被提供给API,然后由集群服务决定如何在环境中安排这些pod,并确保正确运行的pod数量。

因此,位于服务前面的API,工作节点和节点运行的Kubelet进程,共同构成了Kubernetes集群。

6、Kubernetes Architecture的不同组件有哪些

Kubernetes Architecture主要有两个组件 - 主节点和工作节点。如下图所示,master和worker节点中包含许多内置组件。主节点具有kube-controller-manager,kube-apiserver,kube-scheduler等。而工作节点具有在每个节点上运行的kubelet和kube-proxy。

7、您能否介绍一下Kubernetes中主节点的工作情况

Kubernetes master控制容器存在的节点和节点内部。现在,这些单独的容器包含在容器内部和每个容器内部,您可以根据配置和要求拥有不同数量的容器。

因此,如果必须部署pod,则可以使用用户界面或命令行界面部署它们。然后,在节点上调度这些pod,并根据资源需求,将pod分配给这些节点。kube-apiserver确保在Kubernetes节点和主组件之间建立通信。

8、kube-apiserver和kube-scheduler的作用是什么

kube -apiserver遵循横向扩展架构,是主节点控制面板的前端。这将公开Kubernetes主节点组件的所有API,并负责在Kubernetes节点和Kubernetes主组件之间建立通信。

kube-scheduler负责工作节点上工作负载的分配和管理。因此,它根据资源需求选择最合适的节点来运行未调度的pod,并跟踪资源利用率。它确保不在已满的节点上调度工作负载。

9、你对Kubernetes的负载均衡器有什么了解

负载均衡器是暴露服务的最常见和标准方式之一。根据工作环境使用两种类型的负载均衡器,即内部负载均衡器或外部负载均衡器。内部负载均衡器自动平衡负载并使用所需配置分配容器,而外部负载均衡器将流量从外部负载引导至后端容器。

10、Replica Set 和 Replication Controller之间有什么区别

Replica Set 和 Replication Controller几乎完全相同。它们都确保在任何给定时间运行指定数量的pod副本。不同之处在于复制pod使用的选择器。Replica Set使用基于集合的选择器,而Replication Controller使用基于权限的选择器。

Equity-Based选择器:这种类型的选择器允许按标签键和值进行过滤。因此,在外行术语中,基于Equity的选择器将仅查找与标签具有完全相同 短语 的pod。

示例:假设您的标签键表示app = nginx,那么,使用此选择器,您只能查找标签应用程序等于nginx的那些pod。

Selector-Based选择器:此类型的选择器允许根据一组值过滤键。因此,换句话说,基于Selector的选择器将查找已在集合中提及其标签的pod。

示例:假设您的标签键在(nginx,NPS,Apache)中显示应用程序。然后,使用此选择器,如果您的应用程序等于任何nginx,NPS或Apache,则选择器将其视为真实结果。

渗透攻击的测试步骤

1如果原始值为2,我们使用(1+1)或(3-1),程序作出相同回应,表明易受攻击

2如果单引号被过滤掉,我们可以用ASCII命令,使它返回字符的数字化代码,如51-ASCII(1)

3在URL编码中,&和=用于链接名称/值对,建立查询字符串应当分别使用%26和%3d进行编码

4如查询字符串不允许使用空格,使用+或%20编码

5分号被用于分割cookie自读,使用%3d编码


2021面试网络工程师的题目相关 文章 :

★ 关于网络工程师的面试题有哪些

★ 网络管理员面试题及答案大全

★ 最新的运维工程师面试题目整理

★ 网络测试工程师面试题及答案

★ 计算机网络面试题及参考答案

★ 网络工程师面试自我介绍范文五篇

★ 面试网络技术工程师的有哪些提问

★ 最新的it运维工程师面试题整理

面试官想听的不是项目管理工具,而是性能、功能、接口等的测试工具,比如loadrunner、jmeter等,禅道是属于项目管理工具;

结合模块讲的话,就是说你具体是怎么使用这个工具的,比如用loadrunner进行性能测试,可以说是录制脚本,然后对数据进行参数化,之后对服务器进行加压,然后分析生成的结果文件。

1输入已注册的用户名和正确的密码,验证是否登录成功
2输入已注册的用户名和不正确的密码,验证是否登录失败,并且提示信息正确
3输入未注册的用户名和任意密码,验证是否登录失败,并且提示信息正确
4用户名和密码两者都为空,验证是否登录失败,并且提示信息正确
5用户名和密码两者之一为空,验证是否登录失败,并且提示信息正确;
6如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入正确的验证码,验证是否登录成功
7如果登录功能启用了验证码功能,在用户名和密码正确的前提下,输入错误的验证码,验证是否登录失败,并且提示信息正确。

1用户名和密码是否大小写敏感
2页面上的密码框是否加密显示
3后台系统创建的用户第一次登录成功时,是否提示修改密码
4忘记用户名和忘记密码的功能是否可用
5前端页面是否根据设计要求限制用户名和密码长度
6如果登录功能需要验证码,点击验证码是否可以更换验证码,更换后的
7验证码是否可用刷新页面刷新验证码
8如果验证码具有时效性,需要分别验证时效内和时效外验证码的有效性
9用户登录成功但是会话超时后,继续 *** 作是否会重定向到用户登录界
10不向级别的用户,比如管理用户和普通用户,登录系统后的权限是否
11页面默认焦点是否定位在用户名的输入框
12快捷键Tab和 Enter等,是否可以正常使用

1用户密码后台存储是否加密
2用户密码在网络传输过程中是否加密
3密码是否具有有效期,密码有效期到期后,是否提示需要修改密码
4不登录的情况下,在浏览器中直接输入登录后的URL地址,验证是否会重新定向到用户登录界面;
5密码输入框是否不支持复制和粘贴;
6密码输入框内输入的密码是否都可以在页面源码模式下被查看
7用户名和密码的输入框中分别输入典型的"SQL注入攻击”字符串,验证系统的返回页面
8用户名和密码的输入框中分别输入典型的"XSS跨站脚本攻击”字符串,验证系统行为是否被篡改;
9连续多次登录失败况下系统是否会阻止后续的尝试以应对暴力破解
10同一用户在同一终端的多种浏览器上登录,验证登录功能的互斥性是否符合设计预期
11同一用户先后在多台终端的浏览器上登录,验证登录是否具有互斥性。

1单用户登录的响应时间是否小于3s
2单用户登录时,后台请求数量是否过多
3高并发场景下用户登录的响应时间是否小于5S
4高并发场景下服务端的监控指标是否符合预期
5高集合点并发场景下,是否存在资源死锁和不合理的资源等待
6长时间大量用户连续登录和登出,服务器端是否存在内存泄漏

1不同浏览器下,验证登录页面的显示以及功能正确性
2相同浏览器的不同版本下,验证登录页面的显示以及功能正确性
3不同移动设备终端的不同浏览器下,验证登录页面的显示以及功能正确性
4不同分辨率的界面下,验证登录页面的显示以及功能正确性


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/12745395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存