软件测试面试题自动化面经分享——这才是高薪的秘诀!

news2024/10/6 6:44:42

Hello,你们的好朋友来了!今天猜猜我给大家带来点啥干货呢?最近很多小伙伴出去面试的时候经常会被问到跟自动化测试相关的面试题。所以,今天特意给大家整理了一些经常被公司问到的自动化测试相关的面试题。停,咱先收藏起来好吗,别到时候找不到了,再问我要,我可就要装作不认识你了哈。

好了,咱废话不多说,直接上干货吧。

【留言:自动化测试面试题,免费获取】 

一. 第一个最常被问到的问题:你最熟悉的元素定位方式有哪些?

  1. id :根据 id 来获取元素,返回单个元素, id 值一般是唯一的;
  2. name :根据元素的 name 属性定位;
  3. tagName :根据元素的标签名定位;
  4. className :根据元素的样式 class 值定位;
  5. linkText :根据超链接的文本值定位;
  6. partialLinkText :根据超链接的部分文本值定位;
  7. cssSelector : css 选择器定位;
  8. xpath :通过元素的路径来定位;
  9. 优先级最高: ID
  10. 优先级其次: name
  11. 优先级再次: CSS selector
  12. 优先级再次: Xpath

二、如果一个元素无法定位,你一般会考虑哪些因素呢?

这个在我们实际自动化测试过程中也会经常遇到,那一般可以从以下几个方面去考虑:

1、元素定位的方式有误,可以检查元素定位的方法是否正确

2、页面元素加载过慢,需要添加等待时间

3、页面中有框架面,需要先切换到正确的frame框架再进行定位

三、如果一个元素无法定位,你一般会考虑哪些因素呢?

这个在我们实际自动化测试过程中也会经常遇到,那一般可以从以下几个方面去考虑:

1、元素定位的方式有误,可以检查元素定位的方法是否正确

2、页面元素加载过慢,需要添加等待时间

3、页面中有框架面,需要先切换到正确的frame框架再进行定位

四、说一说你知道的自动化测试框架

1、RobotFramework

2、Pytest

3、Unittest

4、PyUnit

五、自动化测试中有几种等待方式,它们之间有什么区别吗?

1、强制等待

time.sleep(3):这种等待方式,意味着必须要等待3秒才可以执行后续的代码。这种形式不够灵活,有可能页面3秒之内已经加载完了,但是还是需要等待3秒才能进行下一步操作。

2、隐式等待

Imlicitlywait:这种形式的等待会在时间内不断查找元素,找到后就可以停止等待。但是这种形式需要等待整个页面加载完成才能进行下一步操作。

3、显式等待

WebDriverWait:这种形式的等待,是针对某个元素进行等待,这个元素只要加载完成就可以执行后续的代码了。这种形式比较灵活。

六、什么是PO模式,它有哪三层?三者的关系是怎样的?

PO模式是一种自动化测试设计思想,是把一个页面看成一个对象,页面的元素看成对象的属性和行为。PO模式一般有三层:

基础层:封装一些最基础的方法

页面对象层:元素定位,页面操作等

测试用例层:业务逻辑,数据驱动

这三层的关系:

页面对象层继承基础层,测试用例层调用页面对象层

七、自动化测试的流程是什么?

1、编写自动化测试计划

2、设计自动化测试用例

3、开发自动化测试脚本

4、执行自动化测试脚本

5、生成自动化测试报告,并分析测试结果

八.你写的测试脚本能在不同浏览器上运行吗

当然可以,我写的用例可以在在 IE ,火狐和谷歌这三种浏览器上运行。实现的思路是封装一个方法,分
别传入一个浏览器的字符串,如果传入 IE 就使用 IE ,如果传入 FireFox 就使用 FireFox ,如果传入 Chrome
就使用 Chrome 浏览器,并且使用什么浏览器可以在总的 ini 配置文件中进行配置。需要注意的是每个浏
览器使用的驱动不一样。

九.在你做自动化过程中,遇到了什么问题吗?举例下

这个问题,不管是自动化还是任何工作,都会被问到。主要想知道你是如何解决问题的,从而推断你问
题分析和解决的能力。 当然有遇到问题和挑战,主要有以下几点: 频繁地变更 UI ,经常要修改页面对象
里面代码 运行用例报错和处理,例如元素不可见,元素找不到这样异常 测试脚本复用,尽可能多代码复
用 一些新框架产生的页面元素定位问题,例如 ck 编辑器,动态表格等

十.xpath和css定位都比较强大,那他们之间有什么区别?

① CSS locator 比 XPath locator 速度快 , 因为 css 是配合 html 来工作,它实现的原理是匹配对象的原理,而
xpath 是配合 xml 工作的,它实现的原理是遍历的原理,所以两者在设计上, css 性能更优秀
②对于 class 属性 Css 能直接匹配部分,而 Xpath 对于 class 跟普通属性一致
③ xpath 可匹配祖先元素 ,css 不可以
④查找兄弟元素, Css 只能查找元素后面 ( 弟弟妹妹 ) 的元素,不能向前找 ( 哥哥姐姐 )

十一. 列表推导式

列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表。

它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。那个表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。返回结果将是一个新的列表,在这个以 if 和 for 语句为上下文的表达式运行完成之后产生。

  1. 列表推导式的执行顺序:各语句之间是嵌套关系,左边第二个语句是最外层,依次往右进一层,左边第一条语句是最后一层。
[x*y for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]

他的执行顺序是:

for x in range(1,5)
    if x > 2
        for y in range(1,4)
            if y < 3
                x*y
  1. 请用列表导式实现,根据一个列表生成一个新的列表。
    根据某种规则:求平方。
    一行代码实现。
# 请用列表导式实现,根据一个列表生成一个新的列表
# 根据某种规则:求平方
# 一行代码实现


# 第一种并没有实现1和2
list1 = [1,2,3,4,5,6]
# list2 = []
# for i in list1:
#     print(i)
#     r = i * i
#     list2.append(r)
# print(list2)

# 第二种方法可实现
# 用map函数也可以实现
# result = map(lambda x:x*x,list1)
# print(list(result))

# 第三种方法可实现
# 列表推导式实现
# result = [i*i for i in list1]
# print(result)
result = [i**3 for i in list1]
print(result)

#最终只返回大于60的数字,补充i不是返回的结果,i是列表中的元素

result = [i**3 for i in list1 if i**3 > 60]
print(result)

 
# 第四种方法可实现
# 只计算大于3的数字即可
result = [i**3 for i in list1 if i > 3]
print(result)
# 只计算小于3的数字即可
result = [i**3 for i in list1 if i < 3]
print(result)

十二. 冒泡排序的排序思路

# 请使用冒泡排序法,将以下列表中的元素从小到大进行排序
list1 = [5,3,2,10,15,13]
# 实现思路是:两个相邻的数字进行比较,大的向上浮,小的向下沉,最后一个元素是最大的
"""
现在的列表:[5,3,2,10,15,13]
1、比较5和3,具体谁大,name5大于3,所以它们两个袁术的位置就要进行交换
[3,5,2,10,15,13]
2、比较5和2,此时的列表[3,5,2,10,15,13],5比2大,所以5和2交换位置
[3,2,5,10,15,13]
3、比较5和10,那么位置不动
[3,2,5,10,15,13]
4、比较10和15,那么10和15小,所以位置不动
[3,2,5,10,15,13]
5、比较15和13,那么15比13大,所以它们交换位置
[3,2,5,10,13,15]
----------------第一轮比较结束----------
6、比较3和2,那么3比2大,所以热门交换位置
[2,3,5,10,13,15]
7、比较3和5,那么3和5小,所以它们的位置不变
[2,3,5,10,13,15]
8、比较5和10,那么5比10小,所以它们的位置不变
[2,3,5,10,13,15]
9、比较10和13,那么10比13小,所以它们的位置不变
[2,3,5,10,13,15]
经过第一轮的比较,我们已经知道了最后一个元素就是最大的,所以这里13和15就不用比较了
----------------第二轮比较结束----------
10、比较2和3,那么2比3小,所以它们的位置不变
[2,3,5,10,13,15]
11、比较3和5
[2,3,5,10,13,15]
12、比较5和10
[2,3,5,10,13,15]
----------------第三轮比较结束----------
13、比较2和3,那么2比3小,所以它们的位置不变
[2,3,5,10,13,15]
14、比较3和5
[2,3,5,10,13,15]
----------------第四轮比较结束----------
这个时候意味着后边的4个已经确认了他们的顺序
15、比较2和3,那么2比3小,所以它们的位置不变
[2,3,5,10,13,15]


[3,5,2,10,15,13]
[3,2,5,10,15,13]
[3,2,5,10,15,13]
[3,2,5,10,15,13]
[3,2,5,10,13,15]
[2,3,5,10,13,15]
[2,3,5,10,13,15]
[2,3,5,10,13,15]
[2,3,5,10,13,15]

[2,3,5,10,13,15]
[2,3,5,10,13,15]
[2,3,5,10,13,15]

[2,3,5,10,13,15]
[2,3,5,10,13,15]

[2,3,5,10,13,15]
[2,3,5,10,13,15]

"""

十四. 冒泡排序法--代码实现

# 请使用冒泡排序法,将以下列表中的元素从小到大进行排序
list1 = [5,3,2,10,15,13]
# 实现思路是:两个相邻的数字进行比较,大的向上浮,小的向下沉,最后一个元素是最大的
"""
现在的列表:[5,3,2,10,15,13]
1、比较5和3,具体谁大,name5大于3,所以它们两个袁术的位置就要进行交换
[3,5,2,10,15,13]
2、比较5和2,此时的列表[3,5,2,10,15,13],5比2大,所以5和2交换位置
[3,2,5,10,15,13]
3、比较5和10,那么位置不动
[3,2,5,10,15,13]
4、比较10和15,那么10和15小,所以位置不动
[3,2,5,10,15,13]
5、比较15和13,那么15比13大,所以它们交换位置
[3,2,5,10,13,15]
----------------第一轮比较结束----------
6、比较3和2,那么3比2大,所以热门交换位置
[2,3,5,10,13,15]
7、比较3和5,那么3和5小,所以它们的位置不变
[2,3,5,10,13,15]
8、比较5和10,那么5比10小,所以它们的位置不变
[2,3,5,10,13,15]
9、比较10和13,那么10比13小,所以它们的位置不变
[2,3,5,10,13,15]
经过第一轮的比较,我们已经知道了最后一个元素就是最大的,所以这里13和15就不用比较了
----------------第二轮比较结束----------
10、比较2和3,那么2比3小,所以它们的位置不变
[2,3,5,10,13,15]
11、比较3和5
[2,3,5,10,13,15]
12、比较5和10
[2,3,5,10,13,15]
----------------第三轮比较结束----------
13、比较2和3,那么2比3小,所以它们的位置不变
[2,3,5,10,13,15]
14、比较3和5
[2,3,5,10,13,15]
----------------第四轮比较结束----------
这个时候意味着后边的4个已经确认了他们的顺序
15、比较2和3,那么2比3小,所以它们的位置不变
[2,3,5,10,13,15]



[3,2,5,10,13,15]
[3,2,5,10,15,13]
[3,2,5,10,15,13]
[3,2,5,10,15,13]
[3,5,2,10,15,13]
[5,3,2,10,15,13] 

"""
# 具体冒号排序的代码实现
def bubble_sort(blist):
    list_len = len(blist)
    print("传入参数列表的长度是{}".format(list_len))
    # 如何能够获取到相邻的两个元素
    # 外层循环就是用来控制轮次的
    for i in range(0,list_len-1):
        for j in  range(list_len-1):
            print("此时我们要排序的元素是{}和{}".format(blist[j],blist[j+1]))
            # 排序,交换位置
            if blist[j] > blist[j+1]:
                # 我们使用python特有的交换方法来进行交换
                  blist[j],blist[j+1] = blist[j+1],blist[j]
            print("此时的列表的形状是:{}".format(blist))
        print("========第{}轮比较结束========".format(i+1))
# bubble_sort(list1)

bubble_sort([3,5,67,89,90])

打印结果:

传入参数列表的长度是5
此时我们要排序的元素是3和5
此时的列表的形状是:[3, 5, 67, 89, 90]
此时我们要排序的元素是5和67
此时的列表的形状是:[3, 5, 67, 89, 90]
此时我们要排序的元素是67和89
此时的列表的形状是:[3, 5, 67, 89, 90]
此时我们要排序的元素是89和90
此时的列表的形状是:[3, 5, 67, 89, 90]
========第1轮比较结束========
此时我们要排序的元素是3和5
此时的列表的形状是:[3, 5, 67, 89, 90]
此时我们要排序的元素是5和67
此时的列表的形状是:[3, 5, 67, 89, 90]
此时我们要排序的元素是67和89
此时的列表的形状是:[3, 5, 67, 89, 90]
此时我们要排序的元素是89和90
此时的列表的形状是:[3, 5, 67, 89, 90]
========第2轮比较结束========
此时我们要排序的元素是3和5
此时的列表的形状是:[3, 5, 67, 89, 90]
此时我们要排序的元素是5和67
此时的列表的形状是:[3, 5, 67, 89, 90]
此时我们要排序的元素是67和89
此时的列表的形状是:[3, 5, 67, 89, 90]
此时我们要排序的元素是89和90
此时的列表的形状是:[3, 5, 67, 89, 90]
========第3轮比较结束========
此时我们要排序的元素是3和5
此时的列表的形状是:[3, 5, 67, 89, 90]
此时我们要排序的元素是5和67
此时的列表的形状是:[3, 5, 67, 89, 90]
此时我们要排序的元素是67和89
此时的列表的形状是:[3, 5, 67, 89, 90]
此时我们要排序的元素是89和90
此时的列表的形状是:[3, 5, 67, 89, 90]
========第4轮比较结束========

Process finished with exit code 0

十五. 快速排序法的思想与实现

# 请使用快速排序法实现将以下列表中的元素从小到大的排序
list1 = [5,3,2,10,15,13]
"""
核心思想是
1、从列表中取出任意一个元素,但是我们一般取第一个
2、把这个取出米的元素作为比较的标准
3、把比这个元素小的放在左边
4、把比这个元素大的放在右边
"""
def quick_sort(quick_list):
    print("现在的列表是:{}".format(quick_list))
    if quick_list == []:
        print("------寻找结束,此时列表为空-------")
        return []
    first = quick_list[0]
    # 使用列表推导式加上递归实现
    print("开始寻找比第一个元素《《小》》的元素,第一个元素是{}".format(first))
    less = quick_sort([l for l in quick_list[1:] if l <first])
    print("开始寻找比第一个元素《《大》》的元素,第一个元素是{}".format(first))
    more = quick_sort([m for m in quick_list[1:] if m >= first])
    print("*****此时返回的列表是{}*****".format(less +[first] + more))
    return less +[first] + more
# print(quick_sort(list1))
print(quick_sort([4,2,56,35,78,46,89,1]))
打印结果:
现在的列表是:[4, 2, 56, 35, 78, 46, 89, 1]
开始寻找比第一个元素《《小》》的元素,第一个元素是4
现在的列表是:[2, 1]
开始寻找比第一个元素《《小》》的元素,第一个元素是2
现在的列表是:[1]
开始寻找比第一个元素《《小》》的元素,第一个元素是1
现在的列表是:[]
------寻找结束,此时列表为空-------
开始寻找比第一个元素《《大》》的元素,第一个元素是1
现在的列表是:[]
------寻找结束,此时列表为空-------
*****此时返回的列表是[1]*****
开始寻找比第一个元素《《大》》的元素,第一个元素是2
现在的列表是:[]
------寻找结束,此时列表为空-------
*****此时返回的列表是[1, 2]*****
开始寻找比第一个元素《《大》》的元素,第一个元素是4
现在的列表是:[56, 35, 78, 46, 89]
开始寻找比第一个元素《《小》》的元素,第一个元素是56
现在的列表是:[35, 46]
开始寻找比第一个元素《《小》》的元素,第一个元素是35
现在的列表是:[]
------寻找结束,此时列表为空-------
开始寻找比第一个元素《《大》》的元素,第一个元素是35
现在的列表是:[46]
开始寻找比第一个元素《《小》》的元素,第一个元素是46
现在的列表是:[]
------寻找结束,此时列表为空-------
开始寻找比第一个元素《《大》》的元素,第一个元素是46
现在的列表是:[]
------寻找结束,此时列表为空-------
*****此时返回的列表是[46]*****
*****此时返回的列表是[35, 46]*****
开始寻找比第一个元素《《大》》的元素,第一个元素是56
现在的列表是:[78, 89]
开始寻找比第一个元素《《小》》的元素,第一个元素是78
现在的列表是:[]
------寻找结束,此时列表为空-------
开始寻找比第一个元素《《大》》的元素,第一个元素是78
现在的列表是:[89]
开始寻找比第一个元素《《小》》的元素,第一个元素是89
现在的列表是:[]
------寻找结束,此时列表为空-------
开始寻找比第一个元素《《大》》的元素,第一个元素是89
现在的列表是:[]
------寻找结束,此时列表为空-------
*****此时返回的列表是[89]*****
*****此时返回的列表是[78, 89]*****
*****此时返回的列表是[35, 46, 56, 78, 89]*****
*****此时返回的列表是[1, 2, 4, 35, 46, 56, 78, 89]*****
[1, 2, 4, 35, 46, 56, 78, 89]

Process finished with exit code 0

十六. 网络协议分层

  • 网络协议分层-OSI模型

 

  • 网络协议分层-OSI模式-举例说明

 

  • OSI七层协议与TCP/IP五层协议及对应网络协议

 

十七. web自动化测试中的验证码问题

  1. 你是如何解决登录时验证码的问题的?
  • 验证码的分类
  1. 解决验证码的思路
  • 关闭
  • 万能验证码
  • 绕过
  1. 验证码的处理方法

     (1)取消验证码----->找开发把验证码代码注释掉,适用于测试环境
    
     (2)万能验证码----->找开发把验证码值设置为恒定的,适用于生产环境
    
     (3)识别验证码----->识别成功率不能保证,且只能识别比较简单的验证码
    
     (4)cookie跳过验证码--->通过记录cookie,实现自动登录
    
     (5)半自动化输入验证码---->遇到验证码时暂停一段时间,手动输入验证码
    

十八. 如何管理自动化测试用例?

  • 根据项目的大小
  • 根据项目的阶段(项目之初,项目迭代,项目稳定)

十九. 什么时候开展自动化测试

项目运行相对比较稳定的时候

  • 从项目流程看自动化测试执行的环境

二十.id,name,class,xpath, css selector这些属性,你最偏爱哪一种,为什么?

css 、xpath 几乎所有的元素都可以定位到,但是它们的短处在于页面上更改了元素后位置很容易改变,所以首先使用的还是id或者name等。

二十一.如何去定位页面上动态加载的元素?

触发动态加载元素的事件,直至动态元素出现,进行定位

二十二.如何去定位属性动态变化的元素?

xpath或者css通过同级、父级、子级进行定位 

点击链接以后,Selenium是否会自动等待该页面加载完毕?

会的

--------------------------------------

你敢花3天背完这100道软件测试面试题嘛!背完这些面试题offer还不是手到擒来!!

结语

这篇贴子到这里就结束了,最后,希望看这篇帖子的朋友能够有所收获。

 获取方式:留言【软件测试面试题】即可

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/554721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css之学好rem

1、先说说几个前端常用的几个单位的概论&#xff1a; 1、px (pixel&#xff0c;像素)&#xff1a;是一个虚拟长度单位&#xff0c;是计算机系统的数字化图像长度单位&#xff0c;如果px要换算成物理长度&#xff0c;需要指定精度DPI(Dots Per Inch&#xff0c;每英寸像素数)&am…

Qt软件打包后报错“无法定位程序输入点于动态链接库.exe上。”解决办法(超详细,看完不会怪我)

目录 前言 一、出现类似如下界面&#xff1a; 二、通过尝试分析&#xff0c;这个界面出现的原因是因为自己没有设置环境变量 三、其次右击打开主菜单&#xff0c;选择系统选项 四、选择右边的高级系统设置 五、点击环境变量 六、再系统变量里面找到Path路径 七、点击编辑添…

HOOPS全新文档系统上线!三维模型文件转换更便捷!

HOOPS 2023 U1版本已经正式发布&#xff0c;伴随新版本上线的还有全新的文档系统&#xff0c;新的文档系统亮点包括&#xff1a; 改进了样式和布局&#xff0c;使导航更加简单快捷&#xff1b;修订了导航结构&#xff0c;提高了产品相关信息的清晰度&#xff1b;SDK API参考章…

人员与叉车防撞预警方案

叉车是仓库重吨位运输设备&#xff0c;在工厂、港口、码头、物流企业等有着广泛的使用。然而&#xff0c;叉车事故频繁发生已经引起人们的广泛关注。多数叉车因为前方货物遮挡的视线盲区多&#xff0c;极容易发生事故&#xff0c;例如撞伤人或货架导致货物倒塌伤人&#xff0c;…

nodejs+vue高校教室自习室预约租赁系统

本次设计的主要任务是完成一个教室预约租赁管理系统网站&#xff0c;本系统主要分为普通用户与管理员两个角色, 能够实现登录注册&#xff0c;教室预约,教室租赁,用户管理&#xff0c;教室管理&#xff0c;教室预约等功能。主要分为前端页面设计和后端逻辑功能设计以及数据库设…

循环队列讲解,以及Java实现代码

目录 一.循环队列概念 二.队满和队空的情况 三.代码的实现 总结 &#x1f63d;个人主页&#xff1a; tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主 &#x1f308;梦的目标&#xff1a;努力学习&#xff0c;向Java进发&#xff0c;拼搏一切&#xff0c;让自己的未来…

SonarQube7.8 安装及使用

文章目录 SonarQube 使用手册一、简介1.1、概述1.2、实例组件 二、安装2.1、版本选型2.2、硬件要求2.3、安装2.3.1、解压SonarQube&汉化2.3.2、创建SonarQube数据库2.3.3、修改数据库连接2.3.4、创建SonarQube启动用户2.3.5、赋予启动用户执行权限2.3.6、相关报错解决2.3.7…

Python 框架学习 Django篇 (二) 视图

前面我们实现了一些基本的页面与后台交互的逻辑&#xff0c;但可能还是很迷糊&#xff0c;突然甩出来一些前端的程序是欺负我忘完了吗(某人自述)&#xff0c;还有request.POST 都是干啥的也没说清楚&#xff0c;这里就来详细了解一下 1、什么是视图 我们定义的任何同时包含如下…

网络安全盲目自学只会成为脚本小子?

一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;且过渡到网络安全用到编程的用到的编程的关键点不多。一般人如果想要把编程学好再开始学习网络安全往…

6. 实现简单的线程池

本文以营业厅为例子&#xff0c;实现简单的线程池 一、线程池介绍 现在的企业客户端数以百万&#xff0c;如果某一时刻同时向服务器发消息&#xff0c;那么服务器要处理这些消息是同时开百万个线程吗&#xff1f;&#xff1f;当然不行&#xff01;&#xff01; 根据posix标准&…

Pinna的使用以及pinna的持续化存储(两种方法)

一、简介 pinia是 vue3 新的状态管理工具&#xff0c;简单来说相当于之前 vuex&#xff0c;它去掉了 Mutations 但是也是支持 vue2 的&#xff0c;需要的朋友可以参考下 二、使用方法 1.安装 npm install pinia -S 2..引入 import { createPinia,PiniaPluginContext } from p…

RocketMQ(超级无敌认真好用,万字收藏篇!!!!)

文章目录 RocketMQ1 RocketMQ简介2 Rocket安装2.1 Rocket安装(基于Linux)2.2 控制台安装 3 Rocket的使用3.1 普通消息发送3.1.1 同步消息发送3.1.2 异步消息发送3.1.3 单向消息发送 3.2 普通消息消费3.2.1 集群消费3.2.2 广播消费 3.3 收发顺序消息3.3.1 全局顺序生产消费3.2.2…

今天面试招了个23K的人,从腾讯出来的果然都有两把刷子···

公司前段时间缺人&#xff0c;也面了不少测试&#xff0c;前面一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在15-25k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是4年工作经验&#xff0c;但面试中&#xff0c;不…

黑客辛酸成长史~入门指南

什么是黑客&#xff1f; 站在计算机角度上解释&#xff0c;黑客就是去寻找网站、系统、软件等漏洞&#xff0c;并利用漏洞来取得一些数据或达到控制&#xff0c;让对方程序崩溃等效果。 刚入门的黑客大部分从事渗透工作&#xff0c;而渗透大部分属于web安全方向。因此换个淳朴…

科技政策 | 科技型中小企业、高新技术企业、技术先进型服务企业认定申报时间

原创 | 文 BFT机器人 01 科技型中小企业评价入库 &#xff08;一&#xff09;科技型中小企业评价入口&#xff1a; https://fuwu.most.gov.cn/ &#xff08;二&#xff09;《2023年科技型中小企业评价工作的通知》查看入口&#xff1a; http://gdstc.gd.gov.cn/zwgk_n/tzgg/c…

Typecho搭建和美化

概述 Typecho是一款轻量级的开源PHP博客系统&#xff0c;它简单易用&#xff0c;界面整洁&#xff0c;性能高效&#xff0c;主题、插件众多。我使用的是腾讯云轻量服务器&#xff0c;Typecho的应用模版&#xff0c;一键安装环境。构建自己的博客网站&#xff0c;记录生活、分享…

CSPM 未来发展的思考

由于数据泄露的持续威胁以及云的短暂和快节奏的特性&#xff0c;只有在最基础的层面上保护您的云才有意义。组织已经转向 CSPM 解决方案来锁定他们的平台。 今天我们来聊聊什么是CSPM&#xff0c;它如何去产生有有效的帮助&#xff0c;未来会向哪发展。 什么是 CSPM&#xff1…

【王道·操作系统】第一章计算机系统概述

一、 操作系统的基本概念 1.1 概念&#xff08;定义&#xff09;&#xff1a;什么是操作系统 操作系统operating system,OS&#xff1a;控制和管理整个计算机系统的硬件和软件资源&#xff0c;并合理地组织调度计算机的工作和资源的分配&#xff1b;以提供给用户和其他软件方…

防火墙之iptables(二)

防火墙之iptables&#xff08;二&#xff09; 一.SNAT原理与应用 1.应用环境 局域网主机共享单个公网IP地址接入Internet&#xff08;私网不能被Internet中正常路由&#xff09;2.SNAT原理 修改数据包的源地址内网访问外网 将从内网发送到外网的数据包的源IP由私网IP转换成…

Java-API简析_java.lang.Double类(基于JDK1.8)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/130805572 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…