5年测试被裁,恶补3个月上岸字节28K,面试差点被问哭···
Posted 程序员雷子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5年测试被裁,恶补3个月上岸字节28K,面试差点被问哭···相关的知识,希望对你有一定的参考价值。
我的个人背景非常简单,也可以说丝毫没有亮点。
学历普通,计算机专业二本毕业,毕业后出来就一直在一家小公司,岁月如梭细,算了下至今从事软件测试已经5年了,也点点点了五年,每天都是重复的工作,毫无新意,甚至一度的怀疑人生,后来就失业了,一度颓废了,但是想想又不甘心。
所以在想通之后疯狂的去找面经,去海投简历(都是一些小的不能再小的公司有回复),去找老朋友,去找同学;我也又冷静下来了,准备好好的调整下心态,整理下自己;
在这期间也七七八八的接到一些电话面试;这时候给了我个新的启示——可以去投一些小公司的简历,去面试扫盲,看看哪些东西不会,欠缺哪些知识,然后慢慢的做面试复盘。并且通过这些面试给自己查漏补缺;
也许我的运气没有坏到极限吧,在恶补了三个月知识之后,我朋友给我打来了电话,说是有个字节跳动事业部的内推;
幸运女神往往会眷顾努力的人,所以当好运降临到我头上,我并不诧异,目前拿到了字节跳动25K的offer,下文也不说废话,主要分享我这次“面试经历”和“这段时间的学习方法”,希望能帮助到你们。
字节跳动一面
1.自我介绍;
2.介绍自己做的项目;
3.说一说项目中最有难度和记忆最深刻的项目;
4.对项目实现的逻辑有了解吗?简述下
5.为什么不留在实习公司
6.上线后出现什么情景可以定位到是出了bug呢?
7.设计一个二维码扫码支付的测试用例
8.用户反馈扫描二维码之后没反应,你觉得可能是哪方面的问题,怎么进行问题的排查和定位?
9.一次http请求的过程?请求体被服务器接收后,后续会执行什么操作?
10.一个n行3列的流水表,每列分别为:商品id,商品单价,售卖数量,假设每个的售卖数量为1
11.写一个SQL语句,得出当天销售了多少种产品,并且每个产品的售卖数量是多少?
12.C++编程,实现上述查询功能。
13.select 语句是干嘛的?
14.对网络了解多少?
15.接口测试,对于不同测试环境下的出参报文需要比对报文的一致性,怎么实现?
16.简单说下http协议。cookie和session,什么情况下需要进行更新,周期大概是什么?
字节跳动二面
1.学习和实践经历
2.接口测试了解,接口测试的功能点
3.一次url输入之后会发生的事情
4.三次握手,四次挥手
5.从测试角度出发,抖音的客户可以分为哪几类?
6.Http请求方式了解哪些?post和get的区别,返回状态码的含义
7.为什么离开实习公司,为什么不找算法/
8.python元组和列表的区别,冒泡排序
9.一些学校经历&实习经历
10.线程和进程
字节跳动三面:hr面
1.你的测试职业发展是什么?你自认为做测试的优势在哪里?
2.你找工作时,最重要的考虑因素为何?
3.平时是怎么去学习的?
4.为什么我们应该录取你?
5.说一下的最大的优点和缺点
6.举一下你缺点的例子
7.一个测试工程师应具备那些素质和技能?
8.你在五年内的个人目标和职业目标分别是什么?
9.为什么要在一个团队中开展测试工作?
10.在安排活动的过程中有没有发生什么冲突?
11.你有什么崇拜的人吗?
12.你有什么想问的?
这段时间如何学习?
1、看视频进行系统学习
这5年多的点点点经历,让我明白自己真的算是菜鸡中的战斗机,也正因为点点点,导致自己技术比较零散,所以打算自己从最开始的技术去复习,因为有基础,所以前部分只要自己过一天,让自己印象更加深刻,然后学习更深入的东西,包括了:自动化测试,性能测试,安全测试、测试开发等等
2、读关于软件测试的电子书,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读各种各样的电子书是必不可少的。
3、面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
通过大数据总结发现,其实软件测试岗的面试都是差不多的。常问的有下面这几块知识点:
全网首发-涵盖16个技术栈
第一部分,测试理论(测试基础+需求分析+测试模型+测试计划+测试策略+测试案例等等)
第二部分,Linux( Linux基础+Linux练习题)
第三部分,MySQL(基础知识+查询练习+万年学生表经典面试题汇总+数据库企业真题)
第四部分,Web测试
第五部分,API测试
第六部分,App测试
第七部分,管理工具
第八部分,Python基础(Python基础+编程题+集合+函数+Python特性等等)
第九部分,Selenium相关
第十部分,性能测试
第十一部分,LordRunner相关
第十二部分,计算机网络
第十三部分,组成原理
第十四部分,数据结构与算法
第十五部分,逻辑题
第十六部分,人力资源
软件测试基础
- 软件测试的步骤是什么?
- 如何录制测试脚本?
- 应该考虑进行如何测试的测试方法
- 怎样估计测试工作量?
- 测试设计的问题
- 当测试过程发生错误时,有哪几种解决办法?
- 测试执行的问题
- 测试评估的目标
- 如何提高测试?
- C/S模式的优点和缺点
- B/S模式的优点和缺点
- …
Linux
- grep和find的区别? grep 都有哪些用法?
- 查看IP地址?
- 创建和删除一个多级目录?
- 在当前用户家目录中查找haha.txt文件?
- 如何查询出tomcat的进程并杀掉这个进程,写出linux命令?
- 动态查看日志文件?
- 查看系統硬盘空间的命令?
- 查看当前机器listen 的所有端口?
Python
- 统计python源代码文件中代码行数,去除注释,空行,进行输出?
- python调用cmd并返回结果?
- 冒泡排序
- 1,2,3,4 这4个数字,能组成多少个互不相同的且无重复的三位数,都是多少?
- 请用 python 打印出 10000 以内的对称数(对称数特点:数字左右对称,如:1,2,11,121,1221 等)
- 给定一个整数 N,和一个 0-9 的数 K,要求返回 0-N 中数字 K 出现的次数
- 判断 101-200 之间有多少个素数,并输出所有的素数
- 一个输入三角形的函数,输入后输出是否能组成三角形,三角形类型,请用等价类- 划分法设计测试用例
MySQL
- 你用的mysql是哪个引擎,各引擎之间有什么区别?
- 如何对查询命令进行优化?
- 数据库的优化?
- Sql注入是如何产“生的,如何防止?
- NoSQL和关系数据库的区别?
- MySQL与MongoDB本质之间最基本的差别是什么
- Mysql数据库中怎么实现分页?
- Mysql数据库的操作?
- 优化数据库?提高数据库的性能?
- 什么是数据的完整性?
Web
- Web测试和app测试区别?
- WEB测试环境搭建和测试方法
- WEB测试教程
- WEB测试要点及基本方法
- Web测试页面总结
- …
接口测试
- 什么是接口
- 如果模块请求http改为了https,测试方案应该如何制定,修改?
- 常用HTTP 协议调试代理I具有什么?详细说明抓取HTTPS协议的设置过程?
- 描述TCP/IP协议的层次结构,以及每一-层中重要协议
- jmeter,一个接口的响应结果如下:
- 接口产生的垃圾数据如何清理
- 依赖第三方的接口如何处理
- 测试的数据你放在哪?
- 什么是数据驱动,如何参数化?
- …
性能测试
- 你认为性能测试的目的是什么?做好性能测试的工作的关键是什么?
- 服务端性能分析都从哪些角度来进行?
- 如何理解压力测试,负裁测试以及性能测试?
- 如何判断是否有内存泄漏及关注的指标?
- 描述软件产“生内存泄露的原因以及检查方式。(可以结合- 种开发语言进行描述)
- 简述什么是值传递,什么是地址传递,两者区别是什么?
- 什么是系统瓶颈?
- …
selenium
- 如何开展自动化测试框架的构建?
- 如何设计自动化测试用例:
- webdriver如何开启和退出一个浏览器?
- 什么是自动化测试框架?
- Selenium是什么,流行的版本有哪些?
- 你如何从命令行启动Selenium RC?
- 在我的机器端口4444不是免费的。我怎样才能使用另一个端口?
- 什么是Selenium Server,它与Selenium Hub有什么不同?
- 你如何从Selenium连接到数据库?
- 你如何验证多个页面上存在的一个对象?
- XPath中使用单斜杠和双斜杠有什么区别?
- 如何编写SeleniumIDE/ RC的用户扩展?
- 如何在页面加载成功后验证元素的存在?
- 你对Selenium Grid有什么了解?它提供了什么功能?
- 如何从你的Java Class启动Selenium服务器?
- Selenium中有哪些验证点?
- 什么是XPath?什么时候应该在Selenium中使用XPath?
- …
计算机与网络
- 一台计算机的IP是192.168.10.71子网掩码255.255.255.64与192.168.10.201 …
- 请简述DNS、活动目录、域的概念。
- 10M兆宽带是什么意思?理论下载速度是多少?
- 什么是IP地址?
- OSI七层网络模型的划分?
- TCP和UDP有什么不同?
- HTTP属于哪一层的协议?
- HTTP和HTTPS的区别?
- cookies和session的区别?
- HTTP的get请求和post请求的区别?
- HTTP1.0和HTTP1.1有什么区别
- TCP的连接建立过程,以及断开过程?
- 客户端使用DHCP获取IP的过程?
- 写出某个网段的网络地址和广播地址?
- …
人力资源
- 你的测试职业发展是什么?你自认为做测试的优势在哪里?
- 你找工作时,最重要的考虑因素为何?
- 为什么我们应该录取你?
- 请谈谈你个人的最大特色。
- 一个测试工程师应具备那些素质和技能?
- 还有问一下你是怎样保证软件质量的,也就是说你觉得怎样才能最大限度地保证软件质量?
- 为什么选择测试这行?
- 如果我雇用你,你能给部门带来什么贡献?
文档获取方式:
这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,只需要你点下方免费获取。
资本寒冬,应届生被裁,亲身经历从被裁到上岸,我们该如何自渡?如何保持核心竞争力?
少点代码,多点头发
上篇给大家写了 应届生工作一年不到,从被裁到上岸,我们该如何自渡?如何保证自己的核心竞争力? 反响很好。但是吧,我犯了一个错误,敖丙提醒我的。
太难了,失业这几天没发原创,连个原创都忘记标了,真是傻??。 所以我今天又放了一次次条,这次可标了原创。没看的赶紧看看,稳稳的有帮助。
大大小小也面试了快十家公司了,有些非常重要的面试题和面试经验必须给大家整出来。
首先声明,我投的岗位是搜索方向、后端开发(偏底层、高性能)、java后台(这个岗位是阿里面试官看我简历让我试试的)。
面试的问题主要分为几块去说,C&C++&STL、数据结构与算法(含编程)、操作系统、多线程问题、场景题目、项目。
项目在社招面试中占据的分数很高,所以面试讲项目的时间会多。项目细节就不给大家透漏了,会把项目中的知识点穿插到对应的知识模块。
项目这块
这一块一定是面试最重要的地方。在整个社招面试的时候,自我介绍从来都是从项目说起,不会像校招那样会介绍来自哪里,叫什么名字,会什么技术。
每次自我介绍都是这样说的:
做了什么项目 如果项目是独立设计和开发,要描述为什么做这个项目,设计思路 我在项目中扮演什么角色(如果是团队项目,一定描述清楚自己做了什么功能,起到什么作用) 项目包括哪几个模块,每个模块实现什么功能 项目用了哪些技术,为什么选择用这些 项目中那些点是非常有意义的,为什么
基本就是这些,在讲项目的时候注意要埋伏一些重要的伏笔,比如项目亮点,直说这些亮点非常好,至于原因可以铺垫下,引起面试官的好奇。
阿里面试官给过我一些建议,非常中肯的,也给大家说说。
不得不说大佬的建议非常有力量的。看完大佬给的建议赶紧重新梳理了一遍项目、看看项目有哪些亮点技术和设计、那些难点、产生什么价值。
这是说项目的方式和准备项目方面。面试过程中,面试官问项目是真的问到你很多都是想不到的。
你可能觉得是个很简单的问题,平时不会在意那种,但面试官深深的挖,总感觉下面有矿一样。
可能面试官总是能通过这种细节撂倒你,你也觉得就是你的问题,没掌握好。
举个例子,高效的网络IO底层大多都是epoll实现的。
面试官先是问我epoll的原理,底层用什么实现?为什么高效?红黑树结构中epoll结构体怎么样的?回调使用什么触发的?epoll的边缘触发和水平触发?操作系统怎么管理信号的?为什么这里用红黑树不用哈希表?等等。
就这样一层一层的往下挖,一直挖穿为止。有时候你都说道操作系统,硬件中断层面了。
但是面试官还是如饥似渴,难道还需要说说高低电平,载波脉冲么?
所以项目真的要细节掌握透彻,就连有时候用的一些依赖库什么的,你都的知道为啥用这个,有没有更好的?
项目问的细是一方面,还有一方面就是问的深。
举个例子,当时说项目中用了一种高效的内存分配器,没有用原生的ptmalloc(也就是malloc)。
不要说new了,new的底层还是mallloc。是因为减少多线程情况下的锁开销,每次malloc都会进行加锁和解锁的过程。
面试官紧接着就问,那你用了tcmalloc的确减少了在多线程情况下的锁性能问题。如果我让你继续优化你有什么方法?也是在多线程情况下,内存分配问题。
紧接着又问,你刚刚说减少锁的性能开销,那你知道操作系统层面,锁的代价是多大么?你知道操作系统是怎么加锁的么(锁的原理是什么)?
我是真的服,面试官什么都懂。??,遇到不会的只能说这块我没掌握,说下我的理解吧。
社招,项目这块说的好可以占据很高的分,具体多大比例看面试项目契合度了。如果你的项目刚好对方公司也用到了,那就是基本聊项目聊完。
说的不好,那就有点难了。
总结一下,项目到底该如何准备?如何说?
准备方面,几个核心点。
为什么要做这个项目? 怎么做的? 项目中那些亮点、难点、价值? 项目完成,有没有解决当初的问题?收益怎么样?
如何说,其实简单。只要你准备好了,说清楚,说精彩。最好还能说得跌宕起伏,在穿插几个故事。
其实项目再怎么准备都不为过,不管是从项目的深度,项目的细节。
C&C++&STL问题
程序编译问题
程序编译整个过程?每个步骤都干了什么? 词法分析,分析什么?语法分析,分析什么?语义分析,分析什么?
这个问题我很清楚,是阿里问的。这就是说编译原理了,虽说不是科班出身,但是书还是略微看过。
不用惊讶,都是为了修行。
每个过程怎么用GCC编译的? 如何进行反汇编?
对象模型问题
C++有哪几种对象模型,C++现在使用的那一种? 普通继承的对象模型是怎么样的?存在虚函数的继承对象模型是怎样? 虚继承的对象模型是怎样的?为什么需要虚继承?解决什么问题? 多重继承对下模型? 成员变量会内存对齐么?为什么需要内存对齐?底层怎么实现的? 为什么对象模型需要这样存放?
智能指针问题
智能指针有哪几种? 循环引用怎么解决,为什么用weak_ptr就能解决? 智能指针每一种的使用场景? 智能指针底层怎么支持的,怎么做到的?
STL问题
STL有哪几部分组成? 为什么需要迭代器? vector非尾结点删除,和插入会有什么问题?迭代器失效问题? 优先级队列怎么实现的? 自己实现序列式容器需要实现哪些成员函数?关联式容器呢? 配置器是干嘛用的? 仿函数使用在什么场景? boost库使用过么?使用过哪些函数?
多态问题
为什么需要多态? 多态有哪几种?静态多态是什么?动态多态呢? 多态如何实现的? 虚表指针是什么?虚表里面怎么存的?顺序是什么?为什么需要按照声明的顺序? 虚表第一个位置存放的type_info是干什么用的?RTTI机制是干什么的?为什么需要RTTI机制? 使用多态中遇到哪些问题?
其他还有一些简单问题,比如问你sizeof是编译期还是运行期决议的?函数调用约定是什么?等等
数据结构与算法
直接问你数据结构的不多,一般会搭配着项目问。
问你设计时为什么选用这种数据结构?
常见数据结构以及底层实现?
树形结构和哈希结构的各自优缺点?
有些会问你图结构一些问题
算法也不是直接让你写一个快排什么的,都是给你场景题,让你自己选择用什么算法。
不排除直接让你写快排,比如我这次在面试某家公司的时候,让我写一个单链表快排,不能交换数值,必须交换数据节点的地址。
查找算法和排序算法考的多。
查找算法的话就那几种。
遍历查找 树形查找 二分查找 插值查找 哈希查找 图的遍历查找
排序算法也就那么几种(从之前的博客中拷贝的图)
链表类的问题考的特别多,写算法题目也经常让写链表类的题目。我这次面试写算法基本都是在写链表类的题目。
操作系统&计算机网络
这块也会根据项目中的问,我的项目是搜索引擎,问操作系统的问题自然多。
mmap如何映射?mmap在那些场景中使用?有哪些优点? 物理地址和虚拟地址如何映射?swap区是干嘛的?4g的内存可以运行8g的程序么? 32位系统和64位系统区别是啥?为什么32位系统地址是4字节,64位是8字节? 信号槽机制是怎么实现的? 信号和信号量的区别? 锁的性能开销,锁的实现原理? 进程和线程管理? 多线程资源竞争问题?死锁经典问题(哲学家就餐问题)? io这块问的很多,包括文件IO/网络IO/映射IO,都是要讲原理和细节? 三次握手和四次挥手必问的? 三次握手和四次挥手的状态转移? socket编程每个函数对应握手那个过程?有家面试官竟然问函数参数代表的意思。 网络io的全过程,发生多少次数据拷贝?
场景题目
这块题目是真的难以准备,都是随机应变的。大多数场景题目都是看思维,有些是看你思维完了,再让你对某个模块撸个代码。
说说我这次遇到的几个深刻得场景问题。
题目:
有一个单机高性能的服务,最大只能抗qps 3k,现在因为活动qps涨到了5k。
问题:
面试官:你怎么解决性能问题,从那些方面去考虑?
我:先看服务内部是否需要优化,看看具体哪些地方消耗rt,针对该模块优化,在看资源是否可以扩容等等
面试官:紧接着说,资源是固定的不能扩容?怎样保证服务正常?
我:思考了一会,表示惊讶。
其实这道题,我思路错了,一直在纠结服务性能优化上。面试官说的很清楚,要保证服务正常。
所以一定是限流,优先保证服务稳定性。
说实话,工作中的服务不算严格意义上的限流,采用的是TCP连接队列限流的。
TCP队列大小固定,当队列满了,接下来所有新链接都会被reset,当队列有空余时才可以接受新连接。
题目:
有一个IO场景,100work线程处理完计算服务,把计算结果进行IO操作,IO等待时间长。
问题:
面试官:100个同时IO耗费时间很长,大多数线程都在等待,你怎么优化?
我:可以采用批量IO,用一个单独的线程专门负责IO工作
面试官:IO线程何时去进行批处理?
我:io线程使用阻塞等待,满一批就进行IO;或者work线程每次写数据时检测下队列满了就去唤醒IO线程
面试官:那IO线程完了怎么通知那一批work线程?
我:信号通知
面试官:信号通知不能携带数据结构,假设IO完了之后必须给每个对应的work线程返回一个数据结构,怎么办?
我:用一个全局队列保存IO返回的数据结构,work线程去阻塞等待返回的数据结果。
入门之前我觉得写代码应该挺难的,属于技术活。现在我发现,面试是个技术活,比写代码难度大多了。不光要有实力,也必须要有运气。
反正你如何准备,面试官都会问到你怀疑人生。大多数时候我们都是顺着面试官的反问去思考,结合自己的经历回答。
三个小点提示下:
不一定顺着面试官的思路想,要更多的有自己的思路,适当的时候记得反问面试官? 不一定所有问题都答出来,但是一定你答的问题很精彩。 遇到不会的或者比较难的问题,先说自己的思路,再去询问下面试官的思路,探讨的方式面试。
差不多了,今天分享就到这里了。不是所有面试题,挑选了一些重要的问题说说。
题外话
今天开始在陆陆续续拒绝一些公司了,对于那些很还不错的公司,对你满满诚意,拒绝起来还是有些伤心的。
同时我在想,不管怎么样最终都只能选择一家公司工作。但是在面试的时候又不得不多尝试。
尝试的越多,意味着做出选择的越多。但是,在职业选择上,是真的不是很好选。
每个人对于工作回报的预期不同,有的人把工作当做全部,是实现理想价值的地方,是实现梦想的地方;有的人把工作知识当做能力锻炼的地方,为了以后更大的梦想;也有人是为了赚钱。
总结一下就是三点
积累个人能力 积累经济财富 实现个人价值或者梦想
在选择职业时大家可以根据这三方面仔细思考。要是三个条件都能满足,那就太好了。
更多时候都是有取舍的,大家自行取舍。
下一篇文章给大家总结下本次招工做中的一些总结和需要注意哪些问题。当然我的所有总结都是基于自己的经历,如果有什么异议,欢迎大家探讨。
俊男靓女们的点赞就是龙叔创作的最大动力,奥利给!!!
以上是关于5年测试被裁,恶补3个月上岸字节28K,面试差点被问哭···的主要内容,如果未能解决你的问题,请参考以下文章