学姐面了美团阿里京东的面经

很真实的经历,美团阿里京东全都尝试过。希望对你们都有帮助

近一个多月 断断续续参加了一些校园秋季招聘,仍未上岸。

记录近段时间的反思共享。

(时间顺序)

【美团基础研发部门-测试开发岗(功能测试,测试平台研发,白盒测试等)】第一次面试

  1. 自我介绍
  2. 介绍实习工作
  3. 印象最深刻的线上问题以及解决方案
  4. StringBuffer和StringBuilder的区别
  5. Java悲观锁Synchronized和lock
  6. http和tcp区别
  7. http请求有哪些
  8. Linux查看日志信息,查内存
  9. 算法->整型有序数组,只有一个已知的有重复单元,找到第一次出现的下标(思路:二分查找)
  10. 数据库->表(id,姓名,借阅书籍,借阅时间)查找确定7天的借阅记录,按id排序。

[反思:

  1. 大大方方的自我介绍,来自哪里,叫什么,学校&专业,校内测试实践,实习工作(无则空);这些经历让我对测试工作和技能有了更多了解并认识到了自己的不足和提高方向,如果有机会加入该团队会提前了解工作内容和需要,并做好准备。
  2. 由上引出关于实习的问题(或校内实践)。此介绍个人实习->功能测试为主,校内学习的自动化框架和测试工具辅助测试。回答此问题时介绍了测试的业务系统以及服务对象,提到了要根据不同的测试场景选用对应方法,同时除了熟悉业务的黑盒逻辑还要多多了解业务的代码逻辑。
  3. 由上引出一个线上问题(即bug)怎么排查解决。①尝试复现②关注数据流的各个阶段,前端交互,http请求接口,后台java api接口,数据库③梳理代码逻辑和数据来源(来自sql数据库还是mongo或redis缓存,还是通过多个数据库的拼凑数据)
  4. 串联知识点StringBuffer&StringBuilder区别,除了各自应用场景一定会说到线程安全,引出保证安全的锁机制。
  5. Linux查看日志的过程

cd 指定目录(一般最后一级为logs)

ls 此命令会显示出这个路径下的各个日志文件

cat 文件名(静态查看文件内容)

tail –f 文件名(动态查看日志)

        【在面试官让列举知道的Linux命令时不妨以此场景说出多个命令】

]

【阿里菜鸟部门-测试开发岗(功能测试 黑盒&白盒 数据分析等)】电话第一次面试

  1. 自我介绍。与上答的一样。
  2. 实习工作。与上答的一样。
  3. 实习时接触的系统或工作有什么不好的地方吗?怎么改进。感觉跑偏了答的系统架构,前后端分离什么的,完全不会 其知识点也不属于自己的能力范围;反思认为,应该说自己应该从多方面熟悉业务系统(黑盒 白盒逻辑等)同时提高测试的工作效率,测试也作为敏捷开发周期的一部分其效率也影响到整个项目的进度。
  4. 看过什么源码吗。       ……
  5. 最近看什么书吗。       ……
  6. 反问环节
    1. 系统优化那个问题我该怎么答。

面试官:具体我也不清楚,但我想知道你自己去了解的东西以及去思考的东西,而不是听别人说的。

    1. 我没有什么开发经验,了解的到测试与测试开发的区别是测试开发会开发一些测试工具并以白盒测试为主?是吗,还是有什么区别呢?

面试官(反问):我看到你简历上写的完成过一些UI和http接口的测试框架,为什么说自己没有开发经验呢?其实测试开发与测试都是要结合具体的业务场景的,而测试开发更注重于什么测试场景选用什么测试框架的工具,有时候也会自己mock&stub接口来进行测试的。

[反思:

其实上面也写出一些反思了,阿里的这一面虽然凉的明显但给了我极大的启发和自信。我一般在面试时总会找机会提一下自己没有实际的开发经验,但其实所谓“开发”并没有多么高大、远不可及;软件开发时也是利用程序去梳理业务逻辑,关注消息的同步,数据的增删改查,关注内存的使用,CPU的利用效率,利用接口链接与前端交互等等。这些都是基础知识的应用实践,测试也需要具备开发技能,但我们的开发技能会更多关注测试的框架和技术。这两者是互通的。

而源码的学习又会带来什么呢?能帮我们去理解JVM内存的管理和调度,那些学习的理论也正是源代码的体现。

而由原来李老师给我们看的美团lego接口测试平台发现了美团的技术交流网站

tech.meituan.com

里面有篇文章写道,程序员在复现BUG时发现问题代码没有日志,想加上日志再复现却担心重新启动会破坏线程池等因素。而如果深入了解源码便可以解决此困难,文章介绍了阿里团队研发的开源框架用于解决上述问题。

 

秋招面临的对手来自很多很多优秀的大学,他们比我们起点高且优秀的原因时人家曾比我们效率高,反思的更快,跑的更远。而当我们一起去试水秋招一起竞争的时候我们也并非毫无优势,很多岗位其实我们的能力也绝对能够胜任,这20年我们也经历过很多有益的事,也学过见过足够的世面,我们需要反思、需要思考如何把自己有的东西更好的表达出来。让面试官听到 我们对已有知识的深刻反思以及能够打动他们的事。

]

 

【美团基础研发部门-测试开发岗(功能测试,测试平台研发,白盒测试等)】第二次面试

  1. 介绍实习工作 (负责的四个系统及业务,给谁使用;根据不同的测试需求采取不同的测试方法[手工?自动化?框架辅助等])
  2. 怎么看待测试工作(研发负责实现抽象的业务功能;产品负责梳理需求做出需求文档;测试介于两者之间即需要关注代码逻辑和黑盒的业务功能 正向反向的去设计测试验证,同时也需要关注产品的业务容错率。同时应当结合所在团队的应用框架、组件技术等设计相应的测试。如:前端Vue技术的双向绑定特性能够让表单输入通过Js代码利用”formdata.Name=”填写;由于实习所在团队没实现前后端分离而又由于前端页面相对固定,研发系统实现前端代码的封装应用Json串来操作Java代码实现配置。由此反思,对所测系统的代码逻辑,应用技术深入理解会对测试工作有利。)
  3. 怎么理解测试和测试开发(认为两者都需要具备代码能力,但认为除了业务测试外测试平台的开发是由测试开发岗的人做的)。面试官:测试开发是由测试成长起来的,从业务测试入手,能在不同的测试场景应用相应的测试框架和方法。同时测试开发需要还需要具备一定的产品思维,对产品需求提出建议。
  4. 实习的测试团队有什么不太好的地方吗(研发承担了过多压力,实习的测试流程为需求文档交付测试和开发,测试设计用例并熟悉业务,研发投入漫长的开发,待开发完成后介入测试。认为测试需要提前介入,除了了解黑盒业务外在开发过程中提前了解改造的接口和代码逻辑,梳理开发的上下游依赖并判断测试时是否需要提前做依赖的mock以及mock部分的回归验证,应实时了解研发的进度、困难点和暂不处理的地方这些地方会对应到bug的挂起等相应状态。       同时在此讨论测试人员的代码权限以及bug的定位问题<->测出bug研发不改的问题  bug不改是指bug确认为需要处理的bug但研发不予处理。此有两种可能①需求更改没同步给测试人员bug无效②bug优先级低且研发认为不影响主要功能,其根本原因是bug在上线截止日期前改不完且bug的修复代价很大,这时如果测试人员能协助定位到每个bug的更多信息,或者提供一定程度上的bug解决方向,便会使研发修复问题的效率提高。实现这点需要测试人员更多的了解、理解开发人员的工作,去分担研发的压力)。
  5. 学校学的测试和实际的测试工作有什么不同?(没有不同,只是实际的测试与自己之前对测试的理解有不同。校内实训的测试业务场景和逻辑比较简单,以保证自动化等测试技术的实践;而实际的测试业务十分复杂,不会很容易的把一个有价值的模块单独提炼出来设计自动化测试,但测试工作需要尝试应用一些自动化技术来起到辅助的作用,还有资深业务测试人员会把许多历史遗留问题及时记录并及时在新的业务开发后验证该问题是否升级,还会根据不同的业务场景带入不同的用户角色来设计测试,这些也都是有理论支撑的[探索测试],如果我工作及时反思并与所学的知识结合起来 会 让自己更快的成长。)
  6. 代码题:给定两个字母组成的字符串,去除第一个字符串中含有的第二个字符串的字母,并将结果按字母字典序输出。(思路利用set集合给第二个字符串去重,两个遍历,结果再用排序算法)
  7. 测试代码
  8. Java8个基本类型
  9. 说出Java5个异常
  10. 反问:由于之前发现了tech.meituan.com问了面试官美团Quake全链路压测平台的一些问题。

[反思:

              还是前面那句话,我们很多经历过的东西都值得思考和总结——实训的测试框架每个模块都有很多值得深入学习探索的价值(数据驱动怎么结合业务场景应用?监听器有很多种类型可以实现用例的调度和选择执行等),实习的再平常再机械的工作也有很多哲理值得总结(很多迭代里没修复的问题根据什么理论知识记录的?怎么与产品研发沟通?测试数据的协调等)。

              同时这些反思要怎么谦虚且流畅的表达给面试官

]

【京东云产品研发部门-测试开发工程师(无界面的后台接口测试 对应 数据库的增删改查)】-初试

  1. 自我介绍
  2. 实习工作
  3. Bug生命周期
  4. 生命周期“挂起”状态谁来处理

【京东云产品研发部门-测试开发工程师(无界面的后台接口测试 对应 数据库的增删改查)】-复试

  1. 数据库:A表(id),B表(id)查两个表共有的id->连接查询&子查询
  2. 一个web界面只有一个按钮,点击按钮后,http请求返回200,但界面出现error弹窗,怎么排查是前或后端的问题。(可能前端没有正确的封装后台需要类型的参数;也可能是后台捕获的代码异常处理时返回了200。断定问题需要查看程序日志并关注上述的代码逻辑和运行情况)
  3. 后台的一系列接口,对应到数据库的增删改查逻辑,怎么测试?
  4. 判断测试的两个系统是否属于一个网络
  5. Switch语句和if else语句的区别
  6. 介绍Java集合set,list,map
  7. 一个页面六个输入框怎么测试
  8. Linux grep命令使用

[反思:

              被我忽视的两次面试,由研发组长和系统架构作为面试官,在我回答测试相关的问题时并没有足够的耐心听。但有时候我们需要适应不同的面试官和面试场景,此时应提炼简化自己的回答。

]

【美团基础研发部门-测试开发岗(功能测试,测试平台研发,白盒测试等)】第三次面试(终)

  1. 介绍一个自己遇到的最具有挑战的问题
  2. 这个问题设计的业务场景能否用UML图画出来
  3. 21层楼6台电梯设计一个电梯调度程序实现电梯的调度使用,考虑多个场景。抽象出类和具体的属性方法
  4. 快排的思想,时间复杂度,这个时间复杂度怎么算的,如何计算时间复杂度
  5. HashMap查找的时间复杂度,如何查找的
  6. Java集合有哪些?set和list区别?

[反思:

        ……

]

最终倒在了京东云和美团的最后一次面试上,这是一段极其折磨人的经历。

试水秋招期间

记不清这次准备是第几次回顾:

三次握手,四次挥手;tcp/ip tcp udp http ip https,http请求方法,post&get区别;osi七层协议(以及为什么常问七层协议)及各层之间的作用;url解析过程;长连接&短链接;死锁条件;拥塞控制;流量控制

      

终于进一步搞清了:

JVM垃圾回收机制和分代回收算法;hashmap hashtable concurrentHashMap的区别以及jdk1.7 1.8concurrentHashMap的线程机制变化;线程同步的方法以及方法的原理(乐观锁,悲观锁,volatile关键字);线程的状态和线程池调度以及创建线程的过程。

Sql的索引、两种引擎

 

吸取实习面试经验:

              刷了一些leetcode易中题型,几种经典算法题如:约瑟夫环,topK(堆排序)等

最终反思:

  1. 面试的几轮难度和层次是递进的,如果一次面试后发现自己的所有能力点都被挖掘要及时警惕及时反思,为下一次面试做足准备
  2. 要把理论与实际要面临的工作结合,有助于分清楚知识点的主次
  3. 许多知识点和考点也是需要迭代学习的,每次学习会有新发现,会更接近与实际的应用,而把知识点掌握到能够应用到实际->我认为是修炼的终点
  4. 知识点是有限的,但对知识点的挖掘是无限的,但会有终点的。
  5. 秋招不易,考研也不易,祝福大家坚持到底。也祝上岸的同学一切顺利。
  6. 总还是会有一些运气成分和一些无法改变的东西影在响最终的结果,把握好自己能把握的,最终会上岸的。
  7. 以上纯属个人见解,修行不够,继续努力。

 

兔老大RabbitMQ CSDN认证博客专家 Go/GoLang Redis MySQL
全站最硬核博主(之一)。在腾讯总部工作,bat/tmd有五家发过offer。acm/leetcode刷题狂,c /Java/python/go/php各种后端语言都喜欢,安卓/node/叶子/jsp等前端也能写,最喜欢鼓捣各种组件,请多指教。
相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页