美文网首页我爱编程
程序员面试修炼15 | 支付宝技术岗笔试题

程序员面试修炼15 | 支付宝技术岗笔试题

作者: 淇奥qiaoqiao | 来源:发表于2018-05-25 17:36 被阅读0次

如果你在尝试改变世界,那么你正在做真正重要的事情。相信你每天都会在兴奋中起床。

——Google创始人拉里佩奇

image

机器学习常见术语

1、A/B 测试(A/B testing)

一种统计方法,用于将两种或多种技术进行比较,通常是将当前采用的技术与新技术进行比较。A/B测试不仅旨在确定哪种技术的效果更好,而且还有助于了解相应差异是否具有显著的统计意义。A/B 测试通常是采用一种衡量方式对两种技术进行比较,但也适用于任意有限数量的技术和衡量方式。

2、准确率(accuracy)

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义如下:

在二元分类中,准确率的定义如下:

3、激活函数(activation function)

一种函数(例如ReLU 或S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

4、反向传播算法(backpropagation)

在神经网络上执行梯度下降法的主要算法。该算法会先按前向传播方式计算(并缓存)每个节点的输出值,然后再按反向传播遍历图的方式计算损失函数值相对于每个参数的偏导数。

image

笔试/面试真题真题

支付宝技术岗笔试题

【智力部分】

1.烧一根不均匀的绳要用一个小时,如何用它来判断半个小时?(5 分)

答:从两头开始燃烧判断半小时。

2. 4,4,10,10,加减乘除,怎么得出 24 ?(5 分)
答: (10*10-4)/4

  1. 如果你有无穷多的水,一个容积为3L 的和5L 的提桶,你如何准确称出 4L 的水?(5分)

答:3L倒入5L两次3L剩余1L ,将1L倒入5L,再倒入3L 等于4L。

  1. 一只蜗牛从井底爬到井口,每天白天蜗牛要睡觉,晚上才出来活动,一个晚上蜗牛可以 向上爬3 尺,但是白天睡觉的时候会往下滑2 尺,井深10 尺,问蜗牛几天可以爬出来? (5 分)

答:每天爬3-2=1 尺,爬到第七天的时候=7 尺,最后晚上爬3尺3+7=10,7+1=8 天

  1. 有一种细菌,经过一分钟分裂为2 个,再过一分钟,分裂为4 个,这样,将一个细菌放在一个瓶子里面,一个小时后瓶子被细菌充满了。现在假设一开始放入瓶中的为两个细菌,那么到充满瓶子要多长的时间?(10 分)

答:直接放入两个,省了刚开始分裂的一分钟, 所以是59 分钟。

【专业部分】

6.简述一下面向对象的特征(5 分)

答: 封装,多态,继承。

7.ArrayList 和 HsahSet 的区别?(5 分)

答: Arraylist 有序,通过下标取值;hsahset 无序,通过KEY 获取VALUE。

8.leep() 和 wait() 有什么区别? (5 分)

答:sleep()是让某个线程暂停运行一段时间,其控制范围是由当前线程决定,也就是说,在线程里面决定.好比如说,我要做的事情是"点火->烧水->煮面",而当我点完火之后我不立即烧水,我要休息一段时间再烧.对于运行的主动权是由我的流程来控制.

wait(),首先,这是由某个确定的对象来调用的,将这个对象理解成一个传话的人,当这个人在某个线程里面说"暂停!",thisOBJ.wait(),这里的暂停是阻塞,还是"点火->烧水->煮饭",thisOBJ就好比一个监督我的人站在我旁边,本来该线 程应该执行1后执行2,再执行3,而在2处被那个对象喊暂停,那么我就会一直等在这里而不执行3,但正个流程并没有结束,我一直想去煮饭,但还没被允许, 直到那个对象在某个地方说"通知暂停的线程启动!",也就是thisOBJ.notify()的时候,那么我就可以煮饭了,这个被暂停的线程就会从暂停处继续执行.

9.Spring的事务管理有几种方式?Spring常用的实物隔离级别是哪几种?

声明式事务:(注解,XML) 编程式事务:(代码中嵌入)

隔离级别
1、Serializable:最严格的级别,事务串行执行,资源消耗最大;
2、REPEATABLE READ:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。
3、READ COMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。
4、Read Uncommitted:保证了读取过程中不会读取到非法数据。 隔离级别在于处理多事务的并发问题。我们知道并行可以提高数据库的吞吐量和效率,但是并不是所有的并发事务都可以并发运行,这需要查看数据库教材的可串行化条件判断了。

10.至少写出一种11 位手机号码的正则表达式。(5 分)

^1[3,4,5,7,8]\d{9}$

开发完成之后的测试小知识

1.针对缺陷采取怎样的管理措施?

答:

1. 要更好的管理缺陷, 必须引入缺陷管理工具, 商用的或者开源的都可。

2. 根据缺陷的生命周期,考虑缺陷提交的管理、 缺陷状态的管理和缺陷分析的管理。

3. 所有发现的缺陷(不管是测试发现的还是走读代码发现的)都必须全部即时的、 准确的提交到缺陷管理工具中, 这是缺陷提交的管理。

4. 缺陷提交后,需要即时的指派给相应的开发人员, 提交缺陷的人需要密切注意缺陷的状态, 帮助缺陷的尽快解决。 缺陷解决后需要即时对缺陷的修复进行验证。 这样的目的有两个: 一个是让缺陷尽快解决;二是方便后面缺陷的分析(保证缺陷相关的信息准确, 如龄期等), 这是缺陷状态的管理。

5. 为了更好的改进开发过程和测试过程, 需要对缺陷进行分析,总结如缺陷的类别、 缺陷的龄期分布等信息, 这是缺陷分析的管理。

2.单元测试、 集成测试、 系统测试的侧重点是什么?

答:

单元测试是在软件开发过程中要进行的最低级别的测试活动, 在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试, 测试重点是系统的模块, 包括子程序的正确性验证等。

集成测试, 也叫组装测试或联合测试。 在单元测试的基础上,将所有模块按照设计要求, 组装成为子系统或系统, 进行集成测试。 实践表明, 一些模块虽然能够单独地工作, 但并不能保证连接起来也能正常的工作。 程序在某些局部反映不出来的问题,在全局上很可能暴露出来, 影响功能的实现。 测试重点是模块间的衔接以及参数的传递等。

系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。测试重点是整个系统的运行以及与其他软件的兼容性。

3.设计用例的方法、 依据有那些?

答:

白盒测试用例设计有如下方法:基本路径测试\等价类划分\边界值分析\覆盖测试\循环测试\数据流测试\程序插桩测试\变异测试。

这时候依据就是详细设计说明书及其代码结构。

黑盒测试用例设计方法:基于用户需求的测试\功能图分析方法\等价类划分方法\边界值分析方法\错误推测方法\因果图方法\判定表驱动分析方法\正交实验设计方法。

依据是用户需求规格说明书,详细设计说明书。

4.测试用例通常包括那些内容?着重阐述编制测试用例的具体做法不同结构的用例包括的不一样(版本、 编号、项目、 设计人员、 设计日期、 输入、 预期输出……)

答:

软件测试用例的基本要素包括测试用例编号、测试标题、 重要级别、 测试输入、 操作步骤、 预期结果。

用例编号: 测试用例的编号有一定的规则, 比如系统测试用例的编号这样定义规则:PROJECT1-ST-001 , 命名规则是项目名称+测试阶段类型(系统测试阶段)+编号。定义测试用例编号, 便于查找测试用例, 便于测试用例的跟踪。

测试标题:对测试用例的描述, 测试用例标题应该清楚表达测试用例的用途。 比如 “测试用户登录时输入错误密码时, 软件的响应情况 ” .

重要级别: 定义测试用例的优先级别, 可以笼统的分为 “高 ” 和 “低 ” 两个级别。一般来说, 如果软件需求的优先级为 “高 ” , 那么针对该需求的测试用例优先级也为 “高 ” ;反之亦然。

测试输入: 提供测试执行中的各种输入条件。 根据需求中的输入条件,确定测试用例的输入。 测试用例的输入对软件需求当中的输入有很大的依赖性, 如果软件需求中没有很好的定义需求的输入, 那么测试用例设计中会遇到很大的障碍。

操作步骤:提供测试执行过程的步骤。 对于复杂的测试用例, 测试用例的输入需要分为几个步骤完成, 这部分内容在操作步骤中详细列出。

预期结果:提供测试执行的预期结果,预期结果应该根据软件需求中的输出得出。如果在实际测试过程中,得到的实际测试结果与预期结果不符, 那么测试不通过;反之则测试通过。

5.描述使用 bugzilla 缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程答:

  1. 测试人员或开发人员发现 bug 后, 判断属于哪个模块的问题, 填写 bug报告后, 系统会自动通过 Email 通知项目组长或直接通知开发者。

  2. 经验证无误后, 修改状态为 VERIFIED.待整个产品发布后, 修改为CLOSED.

  3. 还有问题, REOPENED, 状态重新变为“New", 并发邮件通知。

  4. 项目组长根据具体情况, 重新 reassigned 分配给 bug 所属的开发者。

  5. 若是, 进行处理, resolved 并给出解决方法。 (可创建补丁附件及补充说明)

  6. 开发者收到 Email 信息后, 判断是否为自己的修改范围。

  7. 若不是, 重新 reassigned 分配给项目组长或应该分配的开发者。

  8. 测试人员查询开发者已修改的 bug, 进行重新测试。

image

为了让【19应届生】的内容能够更好的帮大家斩获大厂offer,小姐姐煞费苦心通宵完成了这份调查问卷,希望大家能够填写一下,让小姐姐睡个安心觉!

image 各位宝宝们,如果对【19应届生】有任何建议的,可以在菜单“联系我们”加我们工作人员的客服号反馈哦,一起加油吧~! image

相关文章

网友评论

    本文标题:程序员面试修炼15 | 支付宝技术岗笔试题

    本文链接:https://www.haomeiwen.com/subject/aruujftx.html