2023-7月新工作准备

目标

通过半个季度的学习,达到准高级工程师水准,进入大厂(BAT/TMDJKXB);

大纲

科目

  • ✔语言基础
  • ✔算法
  • ✔计算机网络
  • ✔计算机系统/云原生体系
  • ✔数据库
  • ✔大数据架构
  • 前端
  • ✔测试设计

执行规划

  • ✔工作梳理
  • ✔质量体系构建
  • ✔技术复盘
  • ✔期望岗位
  • ✔岗位技能要求分析
  • ✔面试题
  • ✔准备简历
  • 人脉资源
  • ✔面试复盘

科目

语言基础

语言需要解决的问题,操作对象(支持数据类型),对象可进行哪些处理(运算/算法),语句组织(函数/类/模快),应用解决实际问题(建模/面向对象编程)

书籍:

实战:

  • leetcode
  • 牛客(对应面试企业的题)

算法

  • 发一到两天滚一遍算法图解
  • leetcode结合企业面试题刷算法

计算机网络

数据库

前端

测试设计

  • 《海盗派测试分析》看这本书学习测试思维的套路;测试设计
  • The Little Black Book of Test Design;看这本小书学习测试思维;
  • 高级软件测试分析师
  • 高级软件测试管理
    后两本书是国际软件测试工程师高级考试的教材

执行规划

工作梳理

传易工作总结

质量体系构建

质量保障体系

技术复盘

见上方

期望岗位

  • 管理方向

小公司的管理岗(研发团队10-100);构建sop体系,研发平台工具,管理人员;筛选出价值观、目标能达成一致的人遵循,平等、低预期、身体力行的原则来管理

  • 业务岗
    • 业务方向:尽量找大数据相关的方向(大数据体系,我必须先了解下);优先考虑广告、音乐(内容)、金融业务;
    • 技术方向:优先考虑性能、;sop流程建设;其次才是各类工具岗;

岗位技能要求分析

管理

管理岗位始终围绕着;团队管理/体系建设/平台研发/协调管控,来开展工作

  • 腾讯
    岗位要求

    1
    2
    3
    4
    5
    6
    经验:具备两到三年以上的管理经验(相关行业),5年以上工作经验(各领域);要有质量中台团队管理经验,快速迭代的项目经验;有大型项目的经验能负责团队的管理;
    团队:有团队搭建管理优化经验;
    云体系:熟悉云原生,有持续交付实践经验;有智能化和中台化改造的经验;熟悉K8S、devops建设;
    质量体系:能建设质量体系,有整体技术规划,工具平台的架构设计能力;架构经验要全面,含业务架构、效能流程、基础技术架构(安全/可用性/技术平台);要具备研发流程组织管控能力;具备建立sop研发体系能力,能推动运营优化流程;
    技术:要有技术能力,广而深的能力,实现核心代码,解决核心问题难题,且独立/主导开发过平台;
    其他:懂推荐算法,机器学习加分;

    岗位职责

    1
    2
    3
    4
    业务:开发工具、平台,服务业务,参与或组织或规划业务测试;
    质量体系:负责质量体系的建设优化;参与云环境下的持续交互体系建设;深刻理解CICD 及测试各项技术,有服务化、云化软件开发的实践经验者优先;主导项目/业务进行数字化、信息化、标准化改造;
    管理:团队管理/招聘/规划/搭建,出色的团队领导能力和管理能力,有丰富的团队建设经验,有能力吸引和发展杰出人才;
    协作:沟通协作(跨部门),推动;擅于跨团队沟通和协作,具有强烈的责任感和大局观,良好的沟通、表达、协作能力及服务意识。

    个人品质要求

    1
    2
    3
    自驱动能力强,诚实;
    海外项目,需要有海外项目经验,良好的英文口头及书面表达能力,能使用英文作为工作语言;
    具备一定的谈判能力与冲突管理能力,能够承担一定的压力;
  • 其他公司
    同上

技术

业务方面,必须是历史具有经验的;过往工作主要集中在大数据业务的广告,金融风控,音乐类文娱产品;技能方面,主要考虑稳定性、性能、测试平台

广告

广告基本是我职业生涯的全部,广告业务主要分为全链路业务,专项、业务专项主要是模型、对接外部的广告sdk;
岗位要求

1
2
3
4
5
经验:具有3年以上广告/大数据业务的经验,具有工具/测试平台开发经验(尤其需要有前端经验);有专项经验、性能、安全、白盒;
coding:熟悉C/C++/Java/Golang等至少一种编程语言,有Shell或Python等使用经验者优先;深入了解语言特性,数据结构与算法,体系结构等计科知识出色;
云体系:熟悉云原生有K8S、flink、spark、微服务等经验,有持续交付实践经验;有智能化和中台化改造的经验;
平台:熟悉常用的框架,开源项目;给开源项目贡献过代码者优先;其中要对主流前端框架(React\Vue\Angular等)有一定了解,同时对后端的Django/flask等框架也需要有了解;
大数据:熟悉大数据的kafka等技术;且了解机器学习、搜索/推荐/广告等算法;

岗位职责

1
2
3
4
业务:负责广告产品/服务的业务测试,并负责各类专项测试;
环境:负责环境治理及运营;
工具:负责工具平台的开发、运营;
质量体系:负责质量体系的建设优化;
音视频文娱

音视频等产品,最核心的点是音视频资源、推拉流方面的质量专项,其他功能和常规产品差异不大

岗位要求

1
2
3
4
5
6
经验:三年以上的音视频产品测试经验(具备多媒体行业经验,有点播、直播、媒体服务、音视频产品)
coding:熟悉C/C++/Java/Golang等至少一种编程语言,有Shell或Python等使用经验者优先(或者至少精通python、了解java);深入了解语言特性,数据结构与算法,体系结构等计科知识出色;音视频产品需要一定的前端(android/ios)经验;
音视频:了解多线程、及音视频播放原理;熟悉MP4、HLS、DASH、TS、FLV等多媒体容器格式及编解码、网络等策略优化;熟悉音视频生产、传输、播放全流程;熟悉YUV,RGB图像格式;PCM等音视频开发基础知识;了解H.264/H.265/VP9/AV1等至少一种音视频编解码标准;
音频评测:熟悉语音编码或者音频编解码标准,如G.7xx、AMR系列、EVS、AAC系列、OPUS等;熟悉语音编码或者音频编解码标准;熟悉音频质量相关的测试流程,包括音质,响度,时延,连麦通话、音效等测试;
视频评测:有(FFmpeg、H.265&H.266、Traffic Control配置、Wireshark网络分析、OpenCV)等视觉检测评估工具使用经验、视频编解码、流媒体协议,对播放器等相关经验;
音视频专项:精通音视频专项Qoe评测,熟悉音视频的上下行全链路,有参与过Media Codec/Android Framework/ RTC Qos/采集渲染优化/前后处理优化等专项的其中一种,能洞察产品的体验不足;

岗位职责

1
2
3
4
5
业务:负责音视频产品/服务的业务测试,并负责各类专项测试(特殊的点、音质、画质、音视频编解码、渲染、网络策略、时延、卡顿、流畅度、弱网);
环境:负责环境治理及运营;
工具:负责工具平台的开发、运营;
质量体系:负责质量体系的建设优化;
音视频测评体系:负责音质测评体系建设,音质测评模型开发;
大数据

从入行以上,经历的项目都和大数据强相关(广告),因此在大数据项目方面,我的职业经历有一定的优势;大数据项目职业方向主要有,基于大数据架构的数据测试和大数据应用方面的模型测试。
岗位要求

1
2
3
4
5
6
7
8
经验:三年以上的大数据项目测试经验;需要有相应的业务的经验(典型业务、搜索推荐、广告、数仓);
架构:熟悉大数据相关组件包括Hadoop、Hive、Hbase、Spark、Storm、Kafka、flink,flume、pulsar、es、clickhouse、Druid等分布式框架原理,有相关的调优、运维、开发经验者优先;
应用:有大数据集群部署经验,有丰富大数据场景经验,问题快速定位跟踪者优先;
数据:有数据湖相关开发测试经验,覆盖数据加工(离线数仓、ETL)/数据平台/数据产品测试;有落地形成数据测试的方法论,且熟悉sql;
模型:有AI工程系统开发或测试(特征工程/训练/预测)经验,统计学/数据挖掘/机器学习等背景知识,了解常见的算法指标评(AUC/ROC/F1)和AB实验优先;具备算法模型评估经验 / 推荐排序类系统测试经验;
云体系:熟悉云原生,有持续交付实践经验;有智能化和中台化改造的经验;
coding:熟悉C/C++/Java/Golang等至少一种编程语言,有Shell或Python等使用经验者优先(或者至少精通python、了解java);深入了解语言特性,数据结构与算法,体系结构等计科知识出色;
体系:数据质量体系建设、运营;含数据构造,数据录制/回放,数据全链路追踪,数据监控等;以及效果评估体系建设;

岗位职责

1
2
3
4
业务:负责大数据产品/服务的业务测试,并负责各类专项测试;
环境:负责环境治理及运营;
工具:负责工具平台的开发、运营;
质量体系:负责质量体系的建设优化;
海外

海外项目最重要的是语言和背景;英语、其次是市场所属的小语种最佳
岗位要求

1
2
3
4
5
语言:英文读写能力良好,具备基本的英文表达能力,能使用英文作为工作语言;
经验:海外项目的经验,尤其是海外项目的协作经验;针对国际化业务在全球不同地区合规、数据、安全等方面的差异和风险,探索和构建相适应的质量保障策略和手段,并进行有效的落地;
沟通:海外需要跨国或者跨部门沟通,对沟通协作也会有一定的要求;
管理:海外人员/团队的构建和管理;
技能:比国内低一档;

岗位职责

1
2
3
4
5
业务:负责海外产品/服务的业务测试,并负责各类专项测试;
环境:负责环境治理及运营;
工具:负责工具平台的开发、运营;
质量体系:负责质量体系的建设优化;
管理:复杂团队的搭建管理,沟通协作;
效能

效能岗主要有两类,面向业务的效能提升;另一类是面向基础架构的效能平台建设

面试题

面试真题合集

质量流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
基本的测试流程?
测试周期是五天,今天是第三天,发现了一个主流程bug,你需要做什么?
评估整体问题风险,修改计划,影响范围,需要调动的修复资源
对交付时间的影响,整体项目是否可以接受,根据时间承受范围,做出修复方案的判断
完成修复计划
复盘整体问题,讨论为什么主流程问题会在测试后期才被发现。测试流程或总理,缺失?需求临时变更?代码无选择入库?堵住漏洞防止问题再次发生

了解哪些测试方法;?黑盒白盒测试的测试用例设计方法都有哪些?
介绍一下单元测试和冒烟测试?单元测试写过吗?
项目质量的准入准出原则?
灰度上线的标准是是么?
平时怎么做的测试?
现在的业务方面测试流程,质量保障方面的措施,除了自动化,人工怎么分配的?
深问了覆盖率、接口自动化,同时也简单说了下BDA(数据测试)、CTS(android系列兼容测试(Compatibility Test suite))、PFT(),流水线一些准入要求
如何看待peer之间观点不一致?怎么解决?
  • 答案
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    答①:需要关注几点;流程追溯(度量/透明)、各流程准入准出的标准(卡点)、怎么提高流程的效率,主要的流程有:
    1、需求评审
    2、设计评审
    3、方案评审
    4、开发自测/集成测试
    5、测试环节
    6、rc验收环境
    7、内测环节
    8、公测环节
    9、线上问题处理
    流程需要遵循SOP理念(标准、作业(度量/落地)、程序(效率))、基于上下文(业务+公司)和风险来设计;兼顾成本和质量;因此在设计流程时,需要考虑以下方面:
    1、如何建立质量标准,OKR、KPI等工具如何和标准结合;维护质量标准,有无线上/线下问题的收集归纳机制;
    2、有没有配套工具,来运营流程;分析优化问题;
    3、如何提高流程的效率,如何建立适合公司的敏捷模式,如何和云原生、中台等相结合提效;
    4、如何根据公司的规模,人员情况,推动以上问题的处理;

    答②:测试的工作要求提前发现问题,暴露风险;该场景下优先要解决问题,然后分析问题,形成后续经验;
    1、因此要赶快把风险暴露出来;先评估现阶段的风险,影响的范围;
    2、然后把风险立即暴露给项目组,组织协调资源,修改计划;
    3、完成修复计划;复盘问题,考虑为何没有提前发现主流程问题,是需求变更没有及时同步,还是开发私自更加了主流程代码或者其他代码合入问题,还是测试设计不合理;
    4、针对具体的原因,和未来可能出现的风险,优化流程,新增一些卡点策略或流程要求;

    答③:测试是一系列的活动;我理解的测试方法,应该是不局限于测试设计的;
    测试活动的主要过程有,测试信息收集(KYN)、测试信息分析(MFQ/SFDIPOT)、测试方法建模(PPDCS)、测试点覆盖率/有效性分析、最后是执行环节、其实每个环节都很重要需要注意,都要考虑方式方法;
    但是我们一般问的都是测试设计/或者说是建模时候的方法;根据收集到的信息,分析信息,在根据场景不同、特征不同使用不同的方法(如引导词法)。一般来说,我们需要有功能、性能、稳定性、兼容性、及其他质量属性方面的评测;针对流程和对象,我们一般需要考虑界面、功能、数据、接口、环境、操作、时间维度行为等;
    针对具体的功能点,最重要的是挖掘特征或特性,根据主要或不同的特征来使用具体的设计方法保障覆盖和有效性;比如如果是一些输入数据或者参数,具有数据/类型特征的,(如登录,注册输入的场景,就考虑使用等价类,边界值,覆盖有效等级类的各类,然后各类无效等价类边界值);如果特征是一些状态变化的,(比如视频播放,暂停,恢复播放这些),我会考虑使用状态迁移法;如果是流程性的,(比如新手引导),我会考虑使用流程图;如果是输入直接有逻辑关系,输入输出有因果关系(比如抽奖活动的一些,IP限制,国家限制,不同国家,不同奖品不同中奖率这些),我会考虑因果图+判定表,然后使用没一列作为一条测试点;然后比如是一些数据报表,组合查询,这种输入参数没有逻辑约束,我可能直接就用组合法(也就是正交实验法);白盒测试设计方法,主要是覆盖率方面考虑吧;考虑覆盖路径/覆盖条件/覆盖条件组合/覆盖语句这些,还是要根据具体业务和当前项目的情况来;这个问题有点大,我不确定我答的方向是否是对的;其他的一些方法,考虑其他方面,基于风险的,比如有些模块,测试/线上经常出问题,那功能迭代,过去的bug,是不是要做下参考甚至走一遍,其他的就是人员,为了保障质量是否对每个人员的开发质量,或者测试人员的质量需要做量化,如果有些人质量不好,是不是要进行一些培训或者帮助、或者调整;对提测功能大小、代码合并啊这些;当然这些都是要考虑,但一般不在测试设计环境考虑了,会在其他阶段;
    测试设计效果度量,主要考虑有效性和覆盖率;覆盖率一般从代码维度或者测试功能维度考虑;有效性更依赖个人的经验,当然也有特定的训练方法,覆盖率和有效性都是相对的概念,没有绝对的标准;

    答④
    单测是对系统最小粒度的测试;白盒层面的测试,一般是覆盖代码的函数/类/模块/多模块的测试(讲的时候需要体现单测的标准/覆盖率/流程/度量);我们这边的单测是由开发实现单测代码,部分功能由测试codereview,检查单测代码的覆盖率(覆盖率要达到90%);这种方式导致了单测环境测试参与不多,对整个项目的单测覆盖率很难衡量、还有就是需要codereview测试能参与的人力比较少,考虑通过开源框架实现一个待测覆盖率的检查脚本,同时开发单测时需要一些测试数据,这块未来考虑实现一个mock工具通过测试造数,开发调用给开发提供数据;冒烟是有测试在用例设计时标记冒烟用例(通过在线excel文档维护),提交给开发执行,开发执行通过后,标记执行通过,然后在进行提测;提测时,测试会先验收一遍冒烟用例,一旦冒烟不通过则会打回,且会记录,后续项目会根据文档数据归总,会影响开发的绩效;

    答⑤
    (各环节标准/落地+运营/业务风险结合)建立标准的目的,是为了控制风险,设计过程要和项目及业务实际相结合才能有效落地;
    我们质量保障的设计在各环节都有准入准出标准,依次是需求分析阶段需求要想进入评审,首先要通过业务方的优先级判断;且必须要有原型图有文档,且同一个需求评审不能多于两次,且一个季度考核期内的需求二次评审的占比不能超过1%;开发/设计/测试方案评审同理(测试用例的覆盖率不低于90%),一般各环境工作周期超过三天的都需要进行评审环境,三天以内不需要;在提测前开发必须要进行单测且单测的覆盖率不低于90%(由开发自己实现),然后就是冒烟阶段(冒烟用例通过率必须是100%),测试执行,用例必须全部执行/中高等级用例必须全部执行且通过,低级别用例未执行率/通过率不超过5-10%,rc验收前用例修复率必须达到100%,或者低级别用例不能超过5个、中高级别必须全部修复,且整体bug遗留率不能超过1%;然后就是rc验收必须无误;灰度用例必须全部通过,线上反馈的bug不能超过总bug数的1%,且不能有中高级别的bug;
    整个过程主要通过tapd,在线excel文档,禅道来追溯;

    答⑥
    测试,rc验收通过,产品/设计验收通过,无bug遗留(或风险达成共识);传易这边的标准是无中高级别bug遗留或低级别bug遗留率不超过1%;上线环境、配置完成准备,且审核通过;然后就进行灰度发布;灰度梯度加量(无误),线上无问题,则逐步到全量;

    答⑦
    (工作占比,体系化思维,流程);我的日常工作在不同的时间段,工作重心不一样;在前面一年左右,主要负责大数据数据相关的测试,涉及的业务主要是版税结算,音乐的效果数据报表,音乐资源去重这些;已经自动化相关的建设,ui自动化、接口自动化、性能、压测;后面主要负责广告业务的测试已经部分音乐服务端业务的测试;在自动化工作中,我一开始的目的是想先把相应的工具搭起来,先解决从未到有的问题,以实现产出,后续主要是优化,建立规范标准,优化工具,来让工具产生实际的价值,解决监控,重复性回归的问题;当时的规划是提升自动化的覆盖率。让效果可量化,建立可视化的仪表(但这一块没机会落地),因为从22年年中开始就一直有大的人员的调整;在业务测试方面,我的工作思路是先用,先体验,在依赖需求,和相应的同事,以及网上相关的资料,和现在存在和遇到的问题来熟悉产品,发现痛点,从而设计测试方案,建立质量衡量的标准;在过程中遇到相关的问题会请教leader,协商解决然后推广;

    答⑧⑨
    我们人员共分了四组,一组负责主业务(音乐)客户端的测试,另一组负责音乐服务端的测试,剩下的第三组负责增值(广告)、会员、游戏、活动业务的测试,我这组负责大数据、脚本工具相关、质量体系探索相关的工作;人员分配是这样的;在质量保障方面,除了接口自动化ui自动化的定时巡检外,还有人工巡检、monkey稳定性、客户端/服务端性能、普罗米修斯的监控和服务的监控机制、已经运维相关同事的值班机制。

    答⑩
    覆盖率=度量场景/所有场景*100%(由于我们没法了解到所有场景,因此覆盖率是一个主观的概念;)但我们可以以其他明确的对象为锚;如从代码覆盖/产品功能覆盖方面入手;假设我们以代码的语句/判定+条件/分支/路径/组合条件方面来判断覆盖率,假定以代码的所有属性覆盖界定为百分百,那么我们就能得到一个确定的覆盖率值(这是白盒覆盖率);功能方面,假定所有最小粒度的功能都覆盖到了我们认为是覆盖了50%,然后每个小功能的每个可能的特征(数值/因果相关/状态流/组合)都覆盖了,假定为90%;所有可能错误都覆盖了在假定为100%;当我们发现测后环节出现问题,我们则认为当前覆盖是不足100%;然后分析问题,定位原因,明确覆盖率的不足的地方;我们要明白,覆盖率作为一个相对指标,我们一般是没法得到明确值的,要评估覆盖率的有效性,最好是通过线上质量(问题)和现有的覆盖测试大纲来对比评判;
    代码实现接口自动化框架:接口执行、接口断言、接口结果查看、多接口执行、接口构造、接口数据维护、问题收集、监控通知、结果报告、持续集成、度量体系;因此要实现的模块有,执行模块、参数构造模块、参数化模块、问题收集模块、数据存储模块、前后置处理模块、调度的控制器、智能化(可视化操作支持、效果度量/结果仪表盘);会使用到的开源框架、pytest(用例调度/参数化)+multiprocess(并发)+request+allour

    答①①
    性格、协作、风险;要具体来看,如果是工作外的,求同存异吧,我会诚恳的表达自己的观点,但我不把说法他人作为目的;如果是工作中的分歧,我会听他说出他的观点,尊重他的观点,然后我会表达出我的观点,针对分歧的地方,我一般会从商业价值,对用户的体验和价值,成效方面来表达观点,如果仍难达成一致,我会找相应的决策人员来一起协商决定,如果最后拍板了,不管决定如何,我都会积极的落实,但是针对具体的风险我还是会做一些操作。

场景设计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
一个视频红包的场景让设计一下测试用例?
接口、性能、压测?
怎么进行弱网测试的?
如果要评估一个接口的性能,首先要考虑哪几个方面?
测试接口时发现返回和预期不一致,应该怎样分析?
如何根据接口文档测试接口?
登陆界面?
深挖项目?
如果一个网页访问速度很慢 可能是什么原因?
网页按钮文本框文件选择框怎么测试?
抖音评论?
如何测试网络直播(问了大概10分钟)?
力扣46.全排列没做出来?
数组中倒数第2大的数?
百度搜索测试用例?
测抖音注册?
测试网易云音乐搜索窗口;?
网易云窗口搜索关键字到返回结果的过程,经历了哪些阶段;?
jacoco怎么统计接口覆盖率?
设计抖音发布视频的测试用例?
如果不同安卓版本上的抖音,一个能发布视频,一个不能,可能是什么原因?
jmeter压测?
针对一个零售机进行测试用例设计?
针对一个IP地址校验的接口进行测试用例设计;(答的不好,面试官后来说是想让我给出具体的关键数据的测试用例)?
测试一个促销活动页面,两种促销活动2选1,要注意安全性?
有什么性能测试方法?
微信发红包测试用例?
微信抢红包测试用例设计?
电梯问题设计测试用例?
收到请求后,服务端调用了哪些相关的组件?越详细越好?
平台开发技术栈介绍;?
自动化介绍、测试框架介绍;?
接口自动化设计;?
微信朋友圈点赞功能设计测试用例 ?如果A点赞了,B没看到,写出自己排查定位原因的思路?
自己说自己熟练使用Charles,问了下都用过Charles的哪些功能,怎么修改返回的状态码?
U I自动化了解;?
性能测试、健壮性测试、是否了解压测;?
线上质量运营、COE分析。?
接口测试、如何保证接口所有分支覆盖;?
说出自己觉得系统中容易出现的问题;?
测试过程中使用哪些方法或工具来测试;?
自动化所用框架。?
mock的底层原理?
对于微信支付的场景设计测试用例?
支付怎么考虑高并发?
自动化这块,Selenium的原理、PO模式的优点?
视频通话用什么协议?
既然提到视频通话,那么给我说一下视频通话可能会出现什么问题?
你如何测试它?
  • 答案
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    答①:红包的显示;红包的位置;红包的动效;红包的倒计时;放置不同类商品红包的显示效果,未开奖时的点击效果,开奖时的点击效果;多个红包;领取红包时的交互动作;领取红包时的音效/特效,是否支持各类音效和特效;领取各类商品,领取成功的效果;领取各类商品,领取失败的效果,自定义各类失败的效果显示;红包跳转外部的场景、其他app、端内其他视频、端内其他活动页;红包埋点;红包兼容(系统、设备、系统版本);红包接口的性能;红包安全机制(作弊策略);红包未开奖时打开,等到开奖效果;红包未开奖时打开,且一直等待到红包有效期结束;红包开奖后一直等待有效期结束后效果;点击关闭按钮关闭红包;点击系统返回按钮关闭红包;打开红包后,切换到后台在切换回前台;打开红包后,切换到其他应用,在切换回来;打开红包后,断网进行领奖;触发领奖按钮后,应用崩溃;每日领取红包达到上限后,继续领取;切换不同系统语言后,领取红包;手机连上代理后领取红包;领取红包后,领取产品同步;领取功能是否稳定,用monkey重复动作;改功能在app不同版本内能否正常使用;或者有没有有效隔离(【腾讯文档】视频红包用例
    https://docs.qq.com/mind/DSUVzTk5EaXNKWlFn)

    答②:内容见(职业--传易音乐工作总结;重点体现在架构,维护;需要体现出有效性/覆盖率方面的价值。

    答③:弱网测试:即弱网仿真测试;通过模拟在相应网络环境下的操作来提前发现该网络环境下的问题,以保障产品在不同网络环境下的质量;
    两种仿真方式:仿真模拟(Qnet腾讯、fiddler)+另一个是真实网络环境构建;重点是弱网标准(2/3/4),弱网操作;第一种可通过fiddler配置实现,终端在通过fiddler来进行代理连接来实现弱网模拟;弱网的原理是通过延迟发送的方式来实现的即数据包/速度=时间,我可以通过变更延迟发送的时间来实现每秒的网速控制;另一种可通过搭建弱网wifi的方式实现;还有就是腾讯qnet弱网测试;覆盖场景。
    具体的实施,需要有一个完善的方案,分析要覆盖的弱网的场景(收集场景的数据流转和网络拓扑结构)、确定仿真的方式+要仿真的网络环境(要验证仿真的有效性)、根据业务风险+场景的特点(确定要覆盖的用例)、观察/采集场景下的网络数据(时延、丢包率等)和应用表现、从而分析弱网环境下的质量
    备注:(https://tech.kujiale.com/ku-jia-le-zhuan-xiang-ce-shi-zhi-ruo-wang-shi-zhan/ https://zhuanlan.zhihu.com/p/608308463)

    答④:接口性能的好坏;直观的标准就是不出问题;能处理预期内的压力,并且有好的性能体验;具体可观察以下方面接口(响应时间(平均/最大/top95响应时间),异常率,吞吐量、各中间件的处理能力);服务所在机器的资源消耗(cpu、内存、网络、磁盘、进程线程数状态等,各中间件的资源消耗)

    答⑤:接口分析要从请求/响应/处理逻辑入手:响应不符合预期,在了解接口文档和预期需求后,先从请求入手,分析请求特点,在通过变更请求参数进行验证性的调用,如果有日志辅助的话,也可以看下过程日志定位;如果这样还无法定位问题,然后走读接口逻辑代码,确认问题;

    答⑥:接口分析要从请求/响应/处理逻辑入手:1、我一般会在读文档前先利用提供的调式数据调用一下接口,看是否能返回(冒烟);2、然后我会从接口文档的响应入手分析响应参数,异常响应,响应耗时、超时等入手来构造请求数据测试;3、我会基于接口文档+接口应用场景等,来对接口的请求参数进行构造,一般是通过分析请求参数特征,使用等价类、边界值、因果图、组合测试等方法构造,来进行验证性的测试;同时我会分析接口的处理逻辑,基于处理逻辑的特征,通过流程法、状态转换法、边界值、错误溯源法来构造数据测试;

    答⑦:登录页面测试点:https://www.processon.com/view/link/64e7890e01d25d53abfce2f7

    答⑧:见(职业--传易工作总结)

    答⑨:网页访问很慢,是典型的性能问题;性能问题可能是前端性能瓶颈或者后端服务性能问题。可以从两个方面来看;
    先压一下网页的接口确认下,服务这边是否有性能瓶颈;服务又可以根据业务类型分析是IO密集型、还是计算型;然后进一步从架构、代码实现、分压机制、负载机制、数据流转(库/表结构)、网络拓扑结构、服务器资源等多方面分析;
    前端性能瓶颈,可以观察页面渲染耗时(css样式实现)、大文件渲染情况、前端缓存策略、分压机制、终端资源消耗等方面来分析;
    一般来说。前端页面内容较少,或无大文件的情况下,一般不会出现性能瓶颈;可以做一些优化和前端缓存策略来解决性能问题。

答②: 接口/性能/压测

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
接口:

架构:ant+jmeter+jenkins+shell脚本+git+DashboardReport
集成:驱动集成到了Jenkins,脚本集成到了git
量化:H5报告通过Jenkins工作流维护了。同时也会同步到git
监控:异常场景,邮件通知,钉钉通知

问题:
维护:脚本需要手动编辑、录入、或者用工具录入;不支持自动录制,维护;
问题分析:问题没做自动化分析,只有邮件通知,而且没有异常信息(数据采集),很难定位问题;
实际效果:只能作为一个巡检或者监控,实际这种普罗米修斯也能做,而且能和服务更好的结合,我这个意义不大;

性能:

架构:jmeter+Jenkins+服务架构
服务架构:客户端+cdn+nginx负责均衡+入口网关路由服务+业务微服务+db(mysql、Redis、MongoDB、aws s3、mq消息队列)+配置(zookeeper+apollo+dubbo+定时任务平台)+监控(普罗米修斯+skyworlking+zabbix+redis监控+kafka后台)
性能测试流程:前提(线上暴露出了性能问题或者迹象)/(评估当前的性能,资源情况进行成本规划);②根据问题或者线上数据,确定期望的TPS/平均响应时间;确定预期的TPS,响应时间(不一定有);③开发写一个设计文档,讲述实现逻辑,压测注意点,可能要覆盖的场景;④写一个测试方案,压测用例;监控数据;⑤运维那边准备性能环境,dba准备性能数据,环境隔离等;⑥准备性能环境、工具、造数据;⑦压测时关注监控数据,主要一些资源数据,性能数据啊⑧分析数据,猜测可能问题的原因;⑨调整验证,迭代;⑩功能覆盖;①①灰度+线上监控;①②复盘,分析问题,作为后续开发规范或者闭坑点;

标准制定:需要基于业务数据和增量情况,做预估分析
性能分析:可以从硬件入手,软件可以从架构、组件、代码设计、网络拓扑结构、表设计、缓存设计、分布式分压机制入手优化
性能提效+集成:可以从自动施压、问题自动采集/监控/分析、环境动态调整入手;如果能实现容灾和自动修复会更有价值;
优化策略:需要平衡成本和性能,尽量不要对架构有大的调整;可见性能专题的优化策略;
具体:全链路压测+性能基线+常态压测;

网络协议

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
浏览器输入URL发生了什么?经历了哪些阶段?
tcp工作原理;三次握手,三次挥手?tcp四次握手?为什么要四次?
tcp udp区别,分别应用场景?
滑动窗口的原理;拥塞控制和滑动窗口的区别;
浏览网站输入url后网络侧的行为;SSL握手的过程?
iso七层协议?
讲下每层中应用的协议?
HTTP请求状态码?
http状态码?
get,post请求的区别?
http和https区别?
三次握手中服务端拒绝连接会发生什么 ?TCP第三次握手失败怎么办,即最后一次握手失败?
http的header有哪些;http特点;cookie和session的区别?
dns解析过程?
如果无法打开某个网页怎么排查问答题 (先确定服务端问题还是客户端问题,最直接的就是抓包,本地网络联通情况=>DNS情况=>目标服务器情况)?
session和cookie区别(深问了好多为什么,为什么session相对安全,面试官说很多没回答到重要的点上。。)?
session可以设计失效时间吗,根据这个设计测试用例?
IPV4和IPV6区别?
TCP怎么保证传输可靠性的(加问了个什么是SYN攻击,不会。。)?
  • 答案
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    答①:整个过程很复杂,分为以下几个阶段如图;①应用层生成数据包并发送(浏览器解析地址,HTTP数据包构造,调用套接字方法,控制操作系统协议栈,生成TCP数据包、封装IP数据包、从而控制网卡驱动程序、生成以太数据包、信号转换发起请求)②数据链路层(子网内,请求广播给网关即路由器)③网络层(光电转换、IP协议+路由表等,数据传输给互联网路由器)④传输层(tcp(三次握手建立连接/四次挥手断开连接)+tcp ack应答机制,实现数据包传递)⑤应用层(网卡(端口、套接字、电信号转换成数字信号、包组装、缓存数据提供给应用、应用协议读取、客户端解析渲染))见上方:网络全流程图

    答②:见上方:网络全流程图

    答③:udp和tcp最大的区别是;udp是无连接的(不用建立连接),没有应答机制,没有流控制和拥塞控制;不能保障传输的可靠性和顺序;tcp有连接,有断开,有应答,有拥塞和流控制(窗口滑动机制);能保障传输的可靠,顺序;但正因为tcp协议如此的复杂,因此在传输速度上会比udp慢;一般情况下都会使用tcp(一般都会用),域名解析(dns域名解析使用udp)

    答④:
    数据传输:

    数据传输:TCP协议使用滑动窗口机制来控制数据的发送和接收,以及实现流量控制和拥塞控制。滑动窗口机制是指每个TCP连接都有一个发送窗口和一个接收窗口,用于记录可以发送或接收的数据包的范围。发送窗口和接收窗口都是由三个变量组成:序列号seq、确认号ack和窗口大小。序列号和确认号用于标识每个数据包的位置和顺序,窗口大小用于表示可以发送或接收的数据包的数量。滑动窗口机制的过程如下:

    ①发送方根据自己的发送窗口大小和对方的接收窗口大小来确定可以发送多少数据包,并按照序列号依次发送。同时,发送方会启动一个定时器,用于检测是否收到对方的确认。
    ②接收方根据自己的接收窗口大小来确定可以接收多少数据包,并按照顺序接收。如果接收到正确且有序的数据包,就向发送方发送一个ACK标志位为1的数据包,表示确认已经接收,并将最后一个接收到的数据包的len值加1作为自己的确认号。同时,接收方会根据自己的缓冲区情况来调整自己的接收窗口大小(同时还会根据应答中的接收方的窗口大小数据来调整),并通知发送方。
    ③发送方收到对方的ACK数据包后(由于tcp头部维护了seq和ack值会先确认ack是否无误),就认为已经成功地发送了相应的数据包,并将自己的发送窗口向前滑动一定距离,以便继续发送后续的数据包。同时,发送方会根据对方通知的接收窗口大小来调整自己的发送窗口大小,并实施拥塞控制算法来避免网络拥塞。
    ④如果发送方在定时器超时之前没有收到对方的ACK数据包,就认为可能发生了丢包或延迟,并重传相应的数据包。同时,发送方会根据重传情况来调整自己的定时器和拥塞窗口大小,并重新启动定时器。

    数据由多个TCP数据包构成时,第一个数据包的序列号seq是0(建立连接),第二个数据包的seq=seq①+len长度(包的最后的len值+1作为seq②);确认号ack的值表示实际接收的数据量,即对应的发送包的len最后的值+1,因此多个包时ack①=seq②;因为ack的计算方法和seq是相同的;也就是通过这种方式控制包传输顺序和确认是否收到包;因此根据seq和ack的编号我们就能判断是否丢包,以及包最后按顺序组装。

系统/云原生

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
linus命令:比较两个文件内容的不同命令?
讲下linux管道kill、grep?
linus将全部文件及子文件中包含aaa的替换成bbb?
Shell命令有哪些?
linux常用指令 chmod?
微服务 单体式的区别 哪个好?
Linux查端口号,Linux查文件最后50行?
linux 查询进程?
ls 和ll区别?
熟悉微服务框架吗;?
进程和线程的区别?
讲下Linux文件命令(is cd touch mkdir mv cp ln )?
在A文件中查字符串“bcd”什么命令( cat A.txt| grep -"bcd" )?
进程之间的通信方式?
Liunx查看磁盘里某个大文件大小(答的 “du” 让具体说一个答的 “du -h -a/dir | grep"[0-9]G\b”)?
awk的用法和参数?
Linux:查找某目录下所有.log结尾的文件,并筛选出文件中的第三个字段,进行求和?
内存溢出和内存泄露的区别?
cpu调度算法?
线程死锁的原因?
解决死锁的方法(不让答八股文,问如何在代码中实现)
进程和线程及协程的区别?
怎么避免服务器集群里面单点接收太多请求而其他服务器却空闲的问题?
rabbit mq怎么设计单侧用例?
linux怎么查找一个文件里面的某一行,用哪几个指令?
进程、线程通信方式?
怎么保证线程修改数据时不会冲突?
linux内存占用过高,该怎么看是哪个进程在哪出了问题?
讲一下在项目中Docker运用?
K8s里node和pod是什么关系?
Docker,问了常用命令、主机的文件复制到容器里的命令?
讲一下K8s?
RPC的理解,了解Dubbo么?
负载均衡,服务器配置(实话实说没操作过,讲了下负载均衡是怎样的)?
栈溢出的场景?
什么时候触发FullGC?
docker 部署,包含组件?
操作系统原子性;页面置换算法有哪些?
查看java相关进程所占内存大小并按升序输出 ?ps auxw --sort=%MEM | grep java
  • 答案
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    答①:diff txt1 text2 -y -W 50		//-y指以并列形式显示两个文件的不同,-W指单列宽度为50

    答②:管道符号|会将前方的输入作为标准输出,输出给后方命令(当一些命令如ls、mkdir不接受标准输出时,还需要对标准输出进行转换,如echo hello| xargs ls);
    kill 用来关闭进程或线程,可在关闭时传递信号如kill -9(强制信号) pid,如此命令是kill掉所有相关名称的进程或线程(ps -a | grep github | awk 'NF=1' | xargs kill -9);
    grep:文本过滤函数。可过滤出文本中含关键词的行grep "过滤关键字" txt;

    答③:替换操作使用sed命令。sed -i 's/替换前参数/替换后/g' txt;因此整个命令为,"grep -rl '替换前参数' 路径|xargs sed -i 's/替换前参数/替换后/g'"

    答④:很多;常见的目录文件操作:ls 、touch、cp、vim、rm、mv;权限用户:chmod、chown、who、su、passwd;文本操作:cat、tail、head、grep、sed、awk;资源监控:du、df、free、vmstat、top、ps、netstat、tcpstat、lsof;系统:env、export、dmesg、uname;时间:time、date、sleep;

    答⑤:chmod是授权函数;在linux文件中,权限分为读/写/执行,每个文件的权限角色有所有者/所有组/其他人,chmod能基于此规则,给不同的角色授予不同的权限;如+增加权限 (chomod -R +124/777 ./),表示给当前文件夹及其子文件夹所有者执行权限,所有组写权限,其他人读文件权限;可通过ls -l查看;

    答⑥:单体式,指将一个程序系统打包成一个独立的程序单元;而微服务指将程序系统按业务分拆成不同的独立服务;单体式的优点是开发、扩展功能、部署方便,缺点是不利于维护、重用、修改;微服务会增加开发、维护的难度,但拆分后服务的复杂度低,灵活性强、可独立部署、容错性强,更方便扩展;

    答⑦:查端口号可以使用以下两个命令(lsof -i|grep pid/netstat -nap|grep pid)

    答⑧:查询进程ps -ef|grep pro/netstat -anp|grep pid/lsof -p pid/lsof -i tcp:80

    答⑨:ll==ls -l, 查看详细文件信息;显示信息会比ls更详细,主要会显示权限和所有者信息,同时会显示文件大小、时间信息;


sql数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
mysql:Like Distinct?
数据库了解吗,关键字有哪些?
100个页面的100个商品;每个商品都有访问次数,需要返回访问总次数top10的页面中的访问次数top10的商品
什么时候不适合用索引?
数据库acid
知道数据索引吗,为什么说索引能提高效率呢?
Mysql怎么创建表,字段;查第十行到第二十行的数据关键字?
mysql统计学生表男生的人数?
mysql分组?
mysql里面索引有哪些;SQL慢查询的原因;主键索引和非主键索引是如何实现的?
mysql内联和外联?
MySql和Redis的区别?
Mysql 出现慢查询的原因(答的是1.先开慢日志开关 2.进行慢日志分析 3.查看硬件问题如网络速度慢,内存不足 4.没有索引或者索引失效 5.数据过多,分库分表 5服务器参数调优my.cnf)?
数据库事务的特性(ACID)?
写SQl,查询A表后10行数据(思路 将表中的数据以id倒序查出所需要的行数,然后将结果保存为临时表,再根据临时表的Id将结果正序排列)?
介绍项目中Redis的使用,二次缓存的一致性保证,数据库持久化是怎么做的等等;?
redis的大key问题怎么解决?
怎么找出redis里面所有的大key?
分redis的数据结构说呢{string、sethash}?
分布式的热key问题?
索引的优缺点,索引的类别?
SQL写出创建唯一索引?
redis的基本类型?
redis的作用,他为什么快?
redis怎么应对很多用户的并发访问?
redis的锁,代码实现?
mysql自增键的使用?
对于"%x%"和性别怎么加索引?
数据库题目里面limit的关键字是什么作用?
索引越多越好吗?
什么是数据库事务?
聚簇索引和非聚簇索引?
Redis持久化、如何保证缓存中的数据持续有效命中?
sql,一张表,一条语句,得到成绩>=60和<60的人数,不能使用两条语句分别查询?
慢查询怎么定位具体哪的问题?
ACID?
读锁,写锁的区别?
死锁?
  • 答案
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    答①:like是模糊匹配函数,通常在where过滤中使用;通配符有%_[]等;distinct是参数去重函数,通常在select子句中使用,能对结果集中的特定列的值去重显示;

    答②:问题很大,不可能全部覆盖,因此需要考虑全面
    数据:增加insert into、delete/drop/update select count/sum/avg from join/right where groub by union order by limit
    库:create databases、drop databases、show databases
    表:create table、drop table、alter table、desc table、show table(表数据)
    其他:视图create view、存储过程、事物处理的方法

    答③:select *,
    row_number() over (partition by 页面,商品
    order by 商品访问次数 desc) as ranking
    from 班级表 limit 10

    第二种:
    for (select top 10 页面id from 页面 order by 页面pv desc) as page
    select 商品id from 商品 where 页面id in page.id order by 商品pv desc

    答④:iO操作中写入/编辑对象很频繁的表不建议用索引,数据量小的表也不建议使用索引;这是由于索引有两种实现方式,一种是哈希索引,一种是B+树(平衡树)索引,底层维护了索引值和所在行内存地址的对应关系,因此查询时,无需查全表,根据索引值就能很快的查到所在行数据;但是写/编辑操作的时候,需要维护索引数据,会加大工作量,从而影响性能;

大数据

1
2
3
4
5
6
项目中用了Elasticsearch,其中的遇到难点是什么呢(答的 es如何跨域 和 es如何通过内网IP进行访问  )?
如何解决的呢 (答的是通过修改添加config.yml 参数)?
提到过大数据,问了Hive,问了我数据倾斜(表示没听过,就讲了下数据清洗)?
介绍下大数据架构?
介绍下大数据的各组件?
介绍下模型质量评测?
  • 答案
    1
    2
    答④:见数据测试专题
    答⑥:见模型测试专题

语言/算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
代码题,列出一个列表中重复的元素?
工作中遇到多进程/多线程的问题?
代码:全排列?
序列号生成的方式?
字典的底层实现方式?
并发和并行的概念,区别?
写代码:字典排序,最长公共前缀?
sort和sorted区别?
了解设计模式吗;?
大概意思:点击一个url,会包含其它url,查找其中包含图片.jpg的所有url?
Python多线程和多进程的性能问题?
最大连续数组的和?
车在停车库丢了,不知道什么时间丢的你要去查监控怎么最快锁定丢车的时间?
python的数据类型有哪些?
1-100个数,无重复 有一个数丢失 高效查找丢失的数?
整型占几个字节、int型数据范围?
分布式环境,1000个子节点全部包含数值型数据 如何查找10个数值最大的?
了解哪些排序算法,哪些是稳定的、哪些是不稳定的?
算法题 两链表相加?
最长不重复子串?
字典、数组、链表、队列、堆栈了解吗?python中数组、队列、堆栈的区别和使用?
coding:最长回文字符串?
数据结构:对称二叉树 ,判断是否是对称二叉树 口述代码,递归的出口,算法的时间复杂度?
科学计数方面的包,介绍用神经网络做的项目,图片分类的算法CNN,介绍CNN,二分类,为什么线性分不了(GBDT)?
动态链接和静态链接?
用什么模型进行分类?
为什么选择CNN而不是SVM等其他的算法分类,选取算法的标准是什么?
选取什么作为机器的输入?
用CNN做了那些调优包括参数的选取方面?
卷积的过程、卷积主要起到了什么作用?卷积的目的是什么?
过拟合和欠拟合的区别?
预防过拟合的方法?
堆和栈的区别?程序运行过程中,什么会存放到栈上,什么会放在堆上?
手撕代码:链表中是否存在环?
python如何倒序输出数组,切片的-1是什么意思
python字典的key能否为数组
python的深拷贝和浅拷贝
python的垃圾回收机制
实现list中的数字组成的数加1,题目是英文的,list形式输出
举例:
输入[1,2,3,4] 输出[1,2,3,5]
输入[9,9,9] 输出[1,0,0,0]
coding:500张牌,每次取走奇数位置的牌,最后剩下一张是多少
测试用例设计 算法题怎么测?
算法 最大连续子数组和?
python 语言特性?
最长无重复子串?
合并两个有序数组?
数组是连续的空间,扩容拷贝是谁做的,具体的原理。扩容的大小?
队列、堆、栈的区别,函数调用另一个函数是用什么数据结构实现的?
python里面有几种锁?
青蛙跳台阶,一次可以跳1或2个台阶,问:N级的台阶总共有多少种跳法?
分析递归方法的时间复杂度(2**n)和空间复杂度(最深路径时为n)?
python单例模式了解嘛(没答出来)、垃圾回收机制?
数据库修改字段语句、sql语句错误或查询慢、牵引出索引?
二叉树知道哪些,完全二叉树、搜索二叉树,平衡二叉树,说一下完全二叉树,说一下搜索二叉树?
手撕代码两道题,一道是判断合理的字符括号,一道是最长的增序子集长度?
python面向对象特性?
Collections合集介绍下?
你怎么理解多态的?
重载和重写的真实例子?
函数参数传递是怎么传递的?
如果方法中定义了一个基本类型变量和引用变量,他们的生命周期是什么样子的?
静态方法可以访问非静态变量嘛?
非静态方法可以访问静态变量嘛?
静态变量,成员变量储存在哪?
手撕代码:驼峰字符?
力扣第3题无重复字符最长字串?
算法快排?
了解过其他类似Springboot的框架么?
讲下Java和python 对于内存管理的不同?
了解Exception和Error 的区别么?
讲下您遇到的Exeption ?
讲下您遇到的Error?
归并排序?
面向对象七大设计原则;?
不同类型的对象在内存中怎么存储;?
什么是泛型,泛型擦除一定会发生吗?
什么时候服务端会发生大量time_wait和close_wait状态?
手撕算法:实现一个算法,找到两个有序数组所有元素一起的中位数?
知道哪些设计模式,单例模式懒汉式口述一下怎么写,volatile的作用是什么?
手撕代码:KMP字符串匹配算法;?
讲一个定下目标但最终放弃了的经历?
讲一个你最讨厌室友的哪一点?
python的装饰器?
python:列表三个参数,切片和步长?
密集IO型任务应该用多线程还是多进程?
并发怎么控制?
有哪些印象深刻的排序算法?这些算法复杂度是多少?哪些稳定?
对于大数据上百万的数据排序怎么选择排序算法?
堆排序相关?
了解图论的相关知识吗?
讲一讲最短路径、迪杰斯特拉之类的?
hashset、hashmap?应用场景?
两数之和,要求算法复杂度0(N)?
怎么验证是不是o(n)的复杂度?
进程调度算法?
去除一段代码中所有的注释:包括//与/**/?
要考虑//与/**/作为字符串存在的情况?
两数之和=目标值的所有数组下标?
aop的动态代理机制?
n个盘子放m个水果,有多少种可能?
怎么解决幂等的问题?
python的深拷贝、浅拷贝的区别?
python的内存管理机制(垃圾回收+内存池),会追问具体?
GIL锁?
PIL?
可变数据类型,不可变数据类型?
class_method的用途?
Django 请求的过程?
Django,Flask的区别?
[魔法外卖]
给定数组nums,长度为n,代表n个外卖的超时时间。外卖员可以花费时间t送一份外卖,一次只能送一份,也可以使用一次魔法不花费时间送一次外卖。
求要求所有外卖不超时需要的最少使用魔法次数。
1 <= n <= 1e5, 1 <= t <= 100, 1 <= nums[i] <= 1e7


输入:
6 5
5 6 7 8 9 10
输出:
4
输入:
6 5
101 102 103 104 105 106
输出:
0
代码


import java.util.*;

public class Main {

// 贪心策略
// 第一个t,优先送[t, 2t - 1]的外卖,其次送[2t, 3t - 1]的外卖,以此类推
// 第二个t,优先送[2t, 3t - 1]的外卖,其次送[3t, 4t - 1]的外卖,以此类推
// ...
public static int minOps(int[] nums, int t) {
int max = 0;
int ans = 0;
// 有序表中存储第key个t,优先处理的外卖个数
// 如[5,6,7,8,9,10],t=5
// map里存放{1=5,2=1}
TreeMap<Integer, Integer> map = new TreeMap<>();
for (int num : nums) {
map.put(num / t, map.getOrDefault(num / t, 0) + 1);
max = Math.max(max, num);
}
int cur = t;
while (cur < max + 1) {
int num = cur / t;
Integer next = map.ceilingKey(num); // 找到第num个t优先处理的外卖
if (next != null) {
map.put(next, map.get(next) - 1);
if (map.get(next) == 0) {
map.remove(next);
}
}
cur += t;
}
// 能处理的外卖已经被处理了,剩下的只能用魔法处理
for (Integer value : map.values()) {
ans += value;
}
return ans;
}

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int t = sc.nextInt();
int[] nums = new int[n];
for (int i = 0; i < nums.length; i++) {
nums[i] = sc.nextInt();
}
System.out.println(minOps(nums, t));
}
}
第二题
[扑克]
有n张纸牌,点数为1-n,每次将堆顶的牌拿两张放到堆底,然后取出堆顶的牌记录点数,操作完所有的牌后,会记下一个序列,根据这个序列还原最初的序列。
1 <= n <= 100000


输入
4
1 2 3 4
输出
4 2 1 3
思路:按照题目要求反向模拟即可。

代码


import java.util.*;

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
for (int i = 0; i < nums.length; i++) {
nums[i] = sc.nextInt();
}
Deque<Integer> deque = new ArrayDeque<>();
for (int i = n - 1; i >= 0; i--) {
deque.addFirst(nums[i]);
int num = deque.pollLast();
deque.addFirst(num);
num = deque.pollLast();
deque.addFirst(num);
}
while (!deque.isEmpty()) {
System.out.print(deque.pollFirst() + " ");
}
System.out.println();
}
}

怎么修改元组?
算法题,找到最后一个不重复字符?
Restful 风格,什么是OpenAI?
selenium等待?
pytest,pass,fail,error的区别?
abcde * 4 = edcba,求各个字母代表多少?
深浅copy?
垃圾回收机制(这里深问了,针对每种机制,提出自己的改进措施,回答的有点乱)?
删除有序链表中重复的元素-II?
顺序表和链表有什么区别?
冒泡排序的时间复杂度,为什么是这个时间复杂度?(其实就是考察冒泡的思想)?
算法:IEDA写反转链表、二叉树后序遍历?
  • 答案
    1
    2
    3
    答:【腾讯文档】算法题①https://docs.qq.com/doc/DSVNFRU5BU3pCZ2hh

    答②:多进程/线程:工作中主要是UI自动化,多设备执行的场景;客户端性能,monkey,资源采集多设备的场景会用到多进程;之所以这样是因为Python多线程,有gil(全局解释器锁,这是互斥锁),同时只能有一个线程能拿到锁,只能使用多核设备的一个核进行上下文切换,本质上没有并行(cpython有此机制,jpython没有);多进程使用的模块multiprocessing模块(进程池/管道/队列/遍历);要提高性能,一般要使用多进程加协程。

管理协作

1
2
如果让我从头搭建一个团队 我将从哪几个方面开始规划?
我的领导与下属怎么评价我 ?
  • 答案
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    答①:团队是为公司战略服务的,因此需要基于战略来规划团队;从以下方面考虑;
    规划:理解公司的战略规划,拆解到具体自己所在的组,明确负责组的短长期的职责和规划;基于规划来分配资源;
    成本:提前做好预算和成本把控,和公司财务及管理层,协商;
    资源:引入合适的人员(考虑人员风格、专业能力、性格、协作能力、解决复杂问题的能力、价值观是否是公司需要的);
    运营:根据当前的项目、战略和资源情况,制定合适的OKR;用来运营管理人员,坚持价值驱动,一起成长的理念;本着公正、尊重、包容、身体力行的态度,做好先行者工作;
    工具:运用好管理/评测/统计类工具,使团队的工作运营能实现数字化、透明、提升团队的效率;
    迭代:做好团队的成长规划,和公司战略结合;坚持能者上,不能者下的公平原则;和业务结合,做好引导创新的工作;设计好合理的协作,优化机制。针对问题及时优化处理;

    答②:这个问题比较复杂;考虑从上级管理/成绩/协作/风格,同时这是个匹配度问题;
    我想一下,团队之间,关系还比较亲密;除了工作私下也经常联系,会一起玩;对我的评价,我的上级莉姐,有说个几个方面吧(情商不高,太实诚,和外部对接的时候容易承诺别人,主动去抗责任;踏实,但不擅长表现工作的价值吧,不懂上级的需求吧(主要是他觉得我的PPT做的很差,向上级汇报的ppt,我记的最多的他让我改了近二十次);同事反馈的最多的,除了上面的这两种,有时候他们会觉得我有点话痨吧;)

其他

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
对我们公司了解?知道和现在的公司多达区别?为什么选择我们公司?
离职原因?
从技术角度我给现在的公司带来了哪些改变,我为公司提供了什么价值?
自我介绍 英文?
为什么做测试?为什么不做开发?
为什么要做测开,对测开的理解?
对团队有什么价值?在团队中的职责、做了哪些事情?
自我介绍?
项目介绍?
怎么自学的?
项目、扮演什么角色?
对新岗位的期望?
如果你遇到一个bug,研发不承认,你怎么操作?
印象最深的一个Bug?
目前薪资,期望薪资?
职业规划?
  • 答案
    1
    2
    3
    4
    5
    答①:风格、价值观的问题(以shein举例);有一定的了解,了解到公司是做海外电商的,主要做快时尚服饰产品,现在在向电商平台迈进;美国是公司最大的市场,去年的营业额超过了300亿美金;很认可公司的价值观,客户至上,全力以赴,快速反映、融合协作、创新;之所以选择公司,是因为公司盛名远播,在快速发展,个人有很好的发展机会;公司和自己比较匹配,因为我也是做海外市场的,很认可公司的企业文化,来之前通过朋友也了解过团队的氛围,这也是我很喜欢的一点;

    答②:离职原因(实话实说,侧重客观)

    答③:业务方面(质量),体系方面(自动化体系),专项方面(专项能力),流程方面(sop)

面试复盘

2023/08/04 海外小说公司STARY 测试工程师 结论:通过面试;婉拒

公司规模较小,深圳这边可能就一百人左右,研发共四十多人,其中测试七人;需要招一个提升团队技术的测试人员(确定?);

问题

1
2
3
思路不太清晰;
简历没有吃透,其中的云原生,大数据相关问题说不上来;
针对问题,没有系统的整理;

2023/08/06 客路旅行 高级性能测试 结论:应该未通过面试
公司规模很大,应该类似于传易集团;业务线很多,其中测试总人数有60人,分各业务线和基础效能部门;

问题

1
2
3
4
5
6
7
8
k8s介绍未答出来;
索引有哪些未答出来;
协程介绍未答出来;
装饰器答的不好;
面试过程中,我太急了,没理解问题,和面试官的目的就答了;
思路不清晰,反复问的时候,我有点不记得了(真实/思路);
Python中的闭包是什么意思?
流量录制工具

答:

1
2

⑦闭包是指将可调用对象和环境闭包在一起,一般是指将但参数的方法或类嵌套到包装方法/类中;常用的闭包操作有,委托机制,工厂函数,装饰器

2023/08/10 SHEIN 高级大数据测试 结论:应该未通过面试
shein是这几年发展最快的公司,岗位是aitab的大数据测试,负责电商数据测试

问题

1
2
3
4
5
对大数据各组件的特性不清楚?
定位具体的数据场景问题未形成方法论?
没有针对各组件的性能测试经验?
针对大数据测试没有平台化方案?
针对pytest框架不熟悉

答:

1
2

答⑤:pytest框架见专题文章;

2023/08/14 TCL 测试工程师(带团队) 结论:面试通过了
tcl岗位是惠州的业务岗,需要带外包团队,表示和职业规划不匹配

问题

1

答:

1

2023/08/15 万兴大数据测试 结论:面试通过了,已经在走流程了
此岗位较匹配,不管是工作内容,还是薪资都比较满意

问题

1
2
3
性能优化,各中间件问题?
大数据各中间件特性问题?
回答时,思维不够活跃,有些没答到点?

答:

1

2023/08/17 跨越速运业务测试 结论:面试通过了,但钱没谈拢
工作内容和薪资都不太匹配

问题

1
2
3
性能优化,各中间件问题?
大数据各中间件特性问题?
性能调优相关?

答:

1

2023/08/25 传易互联支付 结论:无
``

问题

1

答:

1

欢迎关注我的其它发布渠道