阿里巴巴java面试题
阿里巴巴java面试题
阿里巴巴java人员面试的时候一般会遇到哪些问题呢?来看看他们的亲身经历吧!阿里巴巴java面试题一1.如何理解自动化测试,用测试工具进行测试等于自动化测试这句话对不对?
关注点:测试工具的使用是自动化测试的一部分工作,但“用测试工具进行测试”不等于“自动化测试”。自动化测试,模拟手工测试步骤,通过执行程序语言编制的 测试脚本自动地测试软件。 自动化测试,强调借助工具(不仅仅是工具,有时包括策略和工件)来完成测试的执行,也就是用工具来帮助或辅助测试。但是用测试工具进行测试有可能是自动化,半自动化,或者手工测试。
2. 介绍下比较了解的自动化框架,watir,selenium,QTP…..任选一个说说,这个框架的工作原理是什么?
随便选取一个,重要的是原理,而不是使用。大家在用这些框架的时候,一定要关注背后的执行原理.看源码是一个比较简单的途径。
3. 介绍下SoapUI,如果你用着的话。这个框架需要注意什么?
soapUI是一款桌面应用程序,能够监测、触发、模仿以及测试(功能和负载)基于SOAP/WSDL和REST/EADL的`HTTP网络服务。
和大多数的工具一样,都是使用HTTPREQUEST对相应的资源进行请求很提取。再得到response之后进行相应的处理,对XML进行XPATH定位。注意的是SOAP方法中包含GET,POST的方法,POST的方法主要使用Application/xml的MIME形式发送相应的POST数据。
4. 对webservice层面的自动化测试,你认为比较重要的是什么?
对webservice的测试主要分为两个阶段,首先是对WEB Ui层面的数据XML Response与webservice的schema进行对比测试,其次是web Ui层面的数据与数据库服务器中相应的数据进行验证。
5. 对持续集成工具有了解过吗?类似于Jenkins(hudsoon)/Bamboo/Teamcity这些持续集成的工具,有了解过这些吗?
目前比较这几个还算比较流行,阿里主要集中在用hudson。Teamcity在以前的公司了解过。
6. 桌面自动化测试和WEB 自动化测试的区别?
驱动方式不同,C/S架构(或者桌面类型)界面自动化测试,采取的方式可以调用操作系统本身的API(windows桌面软件)来构建自动化测试或者可以采用虚拟机内(java swing程序)的事件处理机制来完成了。
WEB 自动化测试 B/S架构,原理就是依靠JS来进行客户端的操作,然后寻找对象是采用了DOM解析技术,将web方面的节点进行解析定位
7. 自动化测试碰到比较难解决的问题是什么?如果出现这些问题给出你的解决方案?
重点引导到测试结果定位准确这个角度上来, 在自动化程度比较高,case很多,就会存在排查失败的case过程。
解决方案; case错误分类,有效的log日志,异常信息的抓取
8. IOS支持UI自动化,主要有2种方式,介绍下这2种方式?
1.苹果官方提供的技术, UI Automation。
2. 就是在应用中注入测试代码。
Instrument uiautomation 是苹果官方提供的iPhone手机应用的自动化测试工具。控件元素的识别准确,属性获取,元素操作的API丰富。可以很方便的录制测试脚本、回放和查看运行结果。
阿里巴巴java面试题二1. 首先让应聘人员做自我介绍;
2. 面试官拿着简历,根据建立中的一个项目,然后让你说出这个技术架构的基本流程;
3. 画出 STRUTS 框架响应 jsp 的流程图;
4. 针对上一个问题,做的都是 web 项目,在框架中,servlet 对应的是哪一个部分;
Servlet对应的是MVC架构中Controller的职能,负责用户请求的控制跳转
5. 由前两个问题牵引出 web.xml 文件配置中都有哪些属性,以及他的作用;
web应用发布描述文件(即web.xml文件)是在Servlet规范中定义的。他是web应用的配置文件。web.xml和tomcat容器完全独立。
为顶层元素,其他所有子元素都必须定义在它的里面,而且要按元素定义的先后顺序不能颠倒。
下面介绍下它的子元素:
1. 该web站点的名称
2. 该web站点的说明
3. 用来设定该web站点的环境参数(context「配置应用上下文参数」),并初始化它
① 参数名称
② 参数值
4. 设定该web站点的过滤器
① 过滤器的名称
② 指定过滤器的实现类,负责具体的过滤事务
5. 设定该web站点的过滤器的映射
① 过滤器的名称
② 指定过滤器负责过滤的URL
6. 设定该web站点的Servlet的名称和映射
① Servlet的名称
② 指定Servlet的实现类
③ 定义servlet的初始化参数(包括参数名和参数值)
(1) 指定参数的参数名
(2) 指定参数的参数值
④ 指定当web应用启动时,装载servlet的次序。当值为0或正数时,servlet容器先加载小的;如果值为负数或者没有设定,那么servlet容器将在web客户首次访问这个servlet时加载它。
{
Config参数:以相对路径的方式指明struts应用程序的配置文件的位置,如果不设置,则默认值为/WEB-INF/struts-config.xml
Debug参数:社会自servlet的debug级别,空值日志记录的详细程度。默认为0,记录相对最少的日志信息。
Detail参数:设置Digester的debug级别,Digester是Struts框架所使用的用来解析xml配置文件的一个框架,通过此设置,可以查看不同详细等级的解析日志。默认为0,记录相对最少的日志信息。
}
7. 设定该web站点的Servlet的映射
① Servlet的'名称
② 指定访问这个Servlet的URL。这里只需给出对于整个web应用的相对URL路径
8. 设定该web站点的httpSession的生命周期(单位:分钟)
① 指定该httpSession得有效时间。
9. 设定该web站点的欢迎文件列表
① 指定欢迎文件名称。
10. 设定该web站点所使用的taglib
① 设定taglib的唯一标识符,在web应用中将根据这一标识符来引用tablib。
② 指定和taglib对应的tld文件的位置。
11. 设定该web站点所应用的资源
① 对所引用资源的说明
② 指定所引用资源的JNDI名字
③ 指定所引用资源的类名字
④ 指定管理所引用资源的Manager,它有两个可选值:Container和Application。Container表示由容器来创建和管理Resource,Application表示由web应用来创建和管理Resource。
12. 设定该web站点对应Tomcat的tomcat-users.xml中设置的角色名
① 对应Tomcat的tomcat-users.xml中设置的角色名
13. 设定该web站点四种认证类型
①BASIC:HTTP规范,Base64
BASIC
②DIGEST:HTTP规范,数据完整性强一些,但不是SSL
DIGEST
③CLIENT-CERT:J2EE规范,数据完整性很强,公共钥匙(PKC)
CLIENT-CERT
④FORM:J2EE规范,数据完整性非常弱,没有加密,允许有定制的登陆界面。
FORM
/login.jsp
/error.jsp
14. 设定该web站点的错误页面
404
NotFoundRuntimeException.html
java.lang.Throwable
InternalServerErrorRuntimeException.html
15.配置监听器:
……..
com.jj.MyServletContextListener
……..
16.EJB相关和MIME映射:
……
ejb/customer
Entity
com.jj.CustomerHome
com.jj.Customer
ejb/LocalCustomer
Entity
com.jj.CustomerHome
com.jj.Customer
rates/discountRate
java.lang.Integer
10
mpg
video/mpeg
……
6. 对 spring 了解吗?
7. spring 的依赖注入方式有哪几种?(注意不是 spring 的注入方式是依赖注入)
Set 注入
构造器注入
静态工厂的方法注入
实例工厂的方法注入
8. 有关事物的问题,做项目中做到哪些与事物有关的,事物是怎么控制的,怎么去写?
通俗的说,事务(Transaction)就是对数据执行的一组操作,这些操作钭数据从一种状态更改为另一种状态,他们必须为一个单元运行。事务最主要的功能就是确保多个连续的操作必须全部执行成功,否则回复到未执行任何数据操作的最初状态。也就是说事务的结果只有两种状况:事务完成(Transactioncommit), 事务失败(Transaction abort)当事务失败或异常中断时,事务就会回滚(Transactonroolback),回复至数据的初始状态。
9. 项目开发中,如果遇到一个问题,你自己也不知道该用什么技术去解决,怎么去解决,该如何去查?
目前IT解决方案都比较成熟了,一般所遇到的问题都应该有相应的解决方案,例如性能、通信、数据处理等,都应该有相应的开源解决方案,可以先到网上查询相关的开源解决方案,借鉴对方的解决思路或者引入对方的工具进行解决。如果是故障类的,可以通过搜索引擎或产品的文档、源码进行解决。
10. 你有三年项目开发经验,觉得自己比别人有优势的地方在哪?
11. 最后会问对他们公司有什么要了解的
SpringBoot整合ORM开发框架MyBatis和JPA
1、在使用Spring整合ORM组件的过程中,为了达到简化的目的,往往会进行大量的配置。利用SpringBoot可以进一步实现配置的简化。SpringBoot整合MyBatis开发框架,MyBatis是一款常用并且配置极为简单的ORM开发框架。其与Spring结合后,可以利用Spring的特征实现DAO接口的自动配置。在SpringBoot中,又对MyBatis框架的整合进行了进一步简化。
修改pom.xml配置文件,在项目中引入mybatis-spring-boot- starter依赖支持库,切记也需要数据库链接池的支持的哦。
数据表结构,如下所示:
注意:如果数据表字段两个英文单词之间是下划线连接的,但是你的实体类是驼峰命名法,此时就需要进行配置,数据库字段是你下划线分隔,但是bean中的字段是驼峰命名的,如user_name和userName,导致无法匹配。如果是通过xml文件来配置的话,只需要开启驼峰命名转换,setting name="mapUnderscoreToCamelCase" value="true"/>,在/src/main/resources/mybatis/mybatis.cfg.xml里面配置即可。
创建一个po实体类,方便数据传输,如下所示:
在src/main/resources目录中创建mybatis/mybatis.cfg.xml配置文件。如果要开启驼峰命名转换,在这里开启即可,如下所示:
如果在application.properties中开启转换的话,使用mybatis.configuration.map-underscore-to-camel-case=true配置即可。
或者搞个配置类,如果数据库表字段Column无法自动映射到相对应的实体类属性上,我们可以在config包下新建一个自动配置类MybatisConfig,开始驼峰命名规则。
MyBatis配置文件开启驼峰命名映射
修改application.yml配置文件,追加MyBatis配置,如下所示:
搞几个Dao层、Service层、Controller层的接口或者类,如下所示:
注意:如果不想每次都在mapper接口上添加@Mapper注解,可以在主启动类上通过添加@MapperScan注解来批量扫描指定包下的所有mapper接口。
Service层的接口和实现类代码,如下所示:
控制层的代码,如下所示:
项目启动类,如下所示:
通过Postman测试一下,自己写的接口,看看好使不,如下所示:
项目结构,如下所示:
2、JPA是官方推出的Java持久层操作标准(现主要使用Hibernate实现),使用SpringData技术和JpaRepository接口技术,也可以达到简化数据层的目的。要在SpringBoot中使用SpringDataJPA,需要spring-boot-starter-data-jpa依赖库的支持。
修改pom.xml配置文件,引入相关依赖包,如下所示:
创建UserInfo实体类,如下所示:
创建UserDao,然后继承JpaRepository ,此时就可以使用写好的方法了,不用自己再额外写接口和实现,如下所示:
然后定义Service接口和Service接口实现,如下所示:
然后搞一个Controller,作为接口访问的入口,如下所示:
修改程序启动主类,追加Repository扫描配置。如果使用JpaRepository实现了DAO接口的自动实现。需要注意的是,如果想启用Repository配置,则需要在程序启动主类时使用@EnableJpaRepositories注解配置扫描包,而后才可以正常使用。
修改application.properties,使用Druid作为数据源连接池,如下所示:
使用postman进行接口调用,如下所示:
最主要的是给自己增加知识的储备,有备无患。最后给大家分享Spring系列的学习笔记和面试题,包含spring面试题、spring cloud面试题、spring boot面试题、spring教程笔记、spring boot教程笔记、最新阿里巴巴开发手册(63页PDF总结)、2022年Java面试手册。一共整理了1184页PDF文档。私信博主(666)领取,祝大家更上一层楼!!!
本文来自网络,不代表生活常识网立场,转载请注明出处:http://sdsy56.com/churuzhichang/52569.html
上一篇: 阿里巴巴面试笔试题
下一篇: 供电局面试经验
声明: 我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本站部分文字与图片资源来自于网络,转载是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:15053971836@139.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
相关阅读