对日Java面试总结

对日项目流程

一、          在作对日项目之前程序员会拿到相应程序的式样书,程序员将对式样书进行具体的分析。

二、          程序员根据式样书的指示写出程序代码。

三、          当程序员根据式样书出程序代码时出现问题无法继续进行应马上向上级报告,待上级批准后发出式样错误记录票(简称:QA票),由日本公司修正后返回给程序员继续写程序代码。

四、          当程序员完成一本程序代码后并向上级报告由上级进行第一轮的视察。

五、          视察结束后又程序员进行单体测试,将程序代码交给上级由上级整和进行整体测试。

六、          整体测试结束会交给日本由日本公司测试如有错误,则发回程序错误记录票(简称:bug票),由上级交给程序员进行程序修改,完成后交回给上级进行测试。

以上是对日项目的工作手法及流程。

对日工作的流程图:

 

1:介绍一下自己刚做过的项目;

2strutsstruts2的工作流程;

答:struts工作流程:在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流程.
(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;
(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;
(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;
(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;
(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;
(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的JSP组件;
(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;

Struts2工作流程:用户发送请求,在struts.xml文件中找到相应的action请求,根据相应的class类,处理相应的请求,然后返回string字符串,在struts.xml文件中配置的result找到该字符串,到相应的页面。

3Ajax异步请求;

答:核心是xmlHttpRequest,页面不刷新,直接请求服务器,并返回数据。

4jquery验证:

答:用js验证,首先编写好要验证的js代码,在jsp页面引入js验证代码,

在需要验证的输入框或选择框中用class=“validate[….]”写入验证的需求。

5struts2 返回什么类型

答:返回string类型,例如”success”,”fail”。

6你会什么技术?

7介绍自己情况?中文自我介绍。

8项目介绍,自己担当模块。

9自己担当模块如何实现

10项目用到的框架,原理ssi

11HibernateIbatis区别

1.出身 
hibernate 是当前最流行的o/r mapping框架,它出身于sf.net,现在已经成为jboss的一部分了。 
ibatis 是另外一种优秀的o/r mapping框架,目前属于apache的一个子项目了。 

2.原理 
相对hibernate“o/r”而言,ibatis是一种“sql mapping”的orm实现。hibernate 对数据库结构提供了较为完整的封装,hibernate的o/r mapping实现了pojo 和数据库表之间的映射,以及sql 的自动生成和执行。程序员往往只需定义好了pojo 到数据库表的映射关系,即可通过hibernate 提供的方法完成持久层操作。程序员甚至不需要对sql 的熟练掌握, hibernate/ojb 会根据制定的存储逻辑,自动生成对应的sql 并调用jdbc 接口加以执行。 
而ibatis 的着力点,则在于pojo 与sql之间的映射关系。也就是说,ibatis并不会为程序员在运行期自动生成sql 执行。具体的sql 需要程序员编写,然后通过映射配置文件,将sql所需的参数,以及返回的结果字段映射到指定pojo。 

3.机制 
使用ibatis 提供的orm机制,对业务逻辑实现人员而言,面对的是纯粹的java对象。这一层与通过hibernate 实现orm 而言基本一致,而对于具体的数据操作,hibernate会自动生成sql 语句,而ibatis 则要求开发者编写具体的sql 语句。相对hibernate而言,ibatis 以sql开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。 
hibernate与ibatis的对比: 

4.学习成本 
ibatis非常简单易学,hibernate相对较复杂,门槛较高。 

5.开源软件 
二者都是比较优秀的开源产品 

6.二次开发 
当系统属于二次开发,无法对数据库结构做到控制和修改,那ibatis的灵活性将比hibernate更适合 

7.海量数据 
系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的sql语句(或存储过程)才能达到系统性能设计指标。在这种情况下ibatis会有更好的可控性和表现。 

8.自动化程度 
ibatis需要手写sql语句,也可以生成一部分,hibernate则基本上可以自动生成,偶尔会写一些hql。同样的需求,ibatis的工作量比 hibernate要大很多。类似的,如果涉及到数据库字段的修改,hibernate修改的地方很少,而ibatis要把那些sql mapping的地方一一修改。 

9.与数据映射关系 
ibatis以数据库字段一一对应映射得到的po和hibernte这种对象化映射得到的po是截然不同的,本质区别在于这种po是扁平化的,不像hibernate映射的po是可以表达立体的对象继承,聚合等等关系的,这将会直接影响到你的整个软件系统的设计思路。 

10.技术支持 
hibernate现在已经是主流o/r mapping框架,从文档的丰富性,产品的完善性,版本的开发速度都要强于ibatis 

12事务如何理解

数据库事务是指作为单个逻辑工作单元执行的一系列操作。
  设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作:
  · 更新客户所购商品的库存信息
  · 保存客户付款信息--可能包括与银行系统的交互
  · 生成订单并且保存到数据库中
  · 更新用户相关信息,例如购物数量等等
  正常的情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果在这一系列过程中任何一个环节出了差错,例如在更新商品库存信息时发生异常、该顾客银行帐户存款不足等,都将导致交易失败。一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,比如最后一步更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态--库存信息没有被更新、用户也没有付款,订单也没有生成。否则,数据库的信息将会一片混乱而不可预测。
  数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。

13对框架的认识

14针对自己模块操作,在检索按钮摁下时,页面如何进行。(表单验证提交,验证的几种方式,ssi如何整合到一块的)

15项目中properties文件如何处理的

16项目框架怎样处理的,(系统已搭建好的,自己模块soursedao实现自己配置)

17Db是否熟悉

18日语式样书翻译一句话。

19验证都验证些什么?

           必填项,长度,类型,符合一定的规则(例如email,网址,电话号码等)

20证书问题,考证?三级如何评定。

21用日语进行自我介绍

22汉译日

23你写过单体测试书吗

24根据什么进行单体测试的

单体测试的目的是发现软件设计人员在设计单体时错误和漏洞,以及开发人员的Bug和漏洞。不同的公司,不同的项目都具有自己的测试规范和要求,并且以文档的形式记录在案,单体测试人员应该严格按照测试规范和要求进行测试。但是,在实际的测试中,即使测试人员拿着具体的测试要求往往好多基本问题仍然没有发现,那么原因何在呢?不是他的测试方法不对,也不是测试时间不充分,而是测试人员不够严谨和仔细。软件测试是一件很辛苦的工作,有些项目会专门配有测试团队,有些可能是因为项目规模不大或者团队人员不足而没有专门的测试人员,开发人员之间相互进行单体测试。这时候可能是相互之间由于个人关系存在私心,导致测试结果不理想不能达到预期的要求,因为大多数软件开发公司都会将测试出来的Bug记录在案,在项目结束时要统计分析,甚至年终时评定年终奖作为重要的指标。

因此如果条件允许尽可能建立独立的测试团队,实在没有这样的资源,那么对测试人员必须有严格的要求,至少做到以下几点: 单体测试时测试人员首先要根据测试式样书看逐项检查开发者是否实现;其次要按照开发式样书的要求测试开发人员所有功能和需求是否全部实现;最后要提交测试结果报告书,开发人员修改后再测试。项目管理者要对测试结果进行抽查,如果发现Bug没有测试出来的原因是测试人员不够认真,这时要建立相应的处罚机制,比如说这个Bug不仅要记在开发人员身上,同时也要记在对应的测试人员身上

单体测试时需要注意几点:1、建立测试计划2、测试结果文档化 3、测试数据规范化 4、修改及时性。

25有一个收费金额的入力框,进行check时,你如何写这个测试case

非法字符,入力框的长度,边界值,是否为空,纯数字校验,入力值为最大值,及入力值大于最大值,及大于最大值加1;

26在这个项目中,你只写单体测试吗

27首先自我介绍

28谈谈对对日项目开发的理解

29谈谈SSH框架

30谈谈hibernate的理解

1. 面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象、建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程,不管程序运行的过程和操作怎么样,本质上都是要得到一个结果,程序上一个时刻和下一个时刻的运行结果的差异就表现在内存中的对象状态发生了变化。
2.为了在关机和内存空间不够的状况下,保持程序的运行状态,需要将内存中的对象状态保存到持久化设备和从持久化设备中恢复出对象的状态,通常都是保存到关系数据库来保存大量对象信息。从Java程序的运行功能上来讲,保存对象状态的功能相比系统运行的其他功能来说,应该是一个很不起眼的附属功能,java采用jdbc来实现这个功能,这个不起眼的功能却要编写大量的代码,而做的事情仅仅是保存对象和恢复对象,并且那些大量的jdbc代码并没有什么技术含量,基本上是采用一套例行公事的标准代码模板来编写,是一种苦活和重复性的工作。
3.通过数据库保存java程序运行时产生的对象和恢复对象,其实就是实现了java对象与关系数据库记录的映射关系,称为ORM(即ObjectRelation Mapping),人们可以通过封装JDBC代码来实现了这种功能,封装出来的产品称之为ORM框架,Hibernate就是其中的一种流行ORM框架。使用Hibernate框架,不用写JDBC代码,仅仅是调用一个save方法,就可以将对象保存到关系数据库中,仅仅是调用一个get方法,就可以从数据库中加载出一个对象。
4.使用Hibernate的基本流程是:配置Configuration对象、产生SessionFactory、创建session对象,启动事务,完成CRUD操作,提交事务,关闭session。
5.使用Hibernate时,先要配置hibernate.cfg.xml文件,其中配置数据库连接信息和方言等,还要为每个实体配置相应的hbm.xml文件,hibernate.cfg.xml文件中需要登记每个hbm.xml文件。
6.在应用Hibernate时,重点要了解Session的缓存原理,级联,延迟加载和hql查

31谈谈你对ibatis的理解

iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在20##年发起的开放源代码项目,最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。
iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例,相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现,iBATIS需要开发人员自己来写sql语句,这可以增加了程序的灵活性,在一定程度上可以作为ORM的一种补充,程序设计人员应该结合自己的项目的实际情况,来选择使用不同的策略。
iBATIS和Hibernate都做了映射,但iBATIS是把实体类和sql语句之间建立了映射关系,这种策略可以允许开发人员自己来写合适的sql语句,而Hibernate在实体类和数据库之间建立了映射关系,sql对于开发人员是不可见的,对于那些数据量非常大的应用,无法去优化sql语句。
所谓“半自动”,可能理解上有点生涩,纵观目前主流的ORM,无论Hibernate还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO到数据库表的全套映射机制,程序员往往只需定义好了POJO到数据库表的映射关系,即可通过 Hibernate或者 OJB 提供的方法完成持久层操作,程序员甚至不需要对 SQL 的熟练掌握, 

32 HibernateSpring是怎么集成的

配置dataSource 把dataSource注入到sessionFactory, 把sessionFactory注入到DAO类里,DAO类要继承HibernateDaoSupport,然后调用getHibernateTemplate()进行增删改查

33 Springstruts是怎么集成的

Struts的action类,托给spring管理。Action类一般继承org.springframework.web.struts.ActionSupport

org.springframework.web.struts.ActionSupport 类提供一个 getWebApplicationContext() 方法非常容易地获得Spring上下文,全部你需要去做的是从Spring的ActionSupport 代替Struts 中的Action类去延伸你的action

34 分页关键字  rownum的作用

Oracle rownum SQLServer top ,mysqllimit

35 怎么实现分页的

MySQL数据库分页  

Select * from 表名 limit startrow,pagesize(Pagesize为每页显示的记录条数)  

36 日语怎么样

37 单测根据什么做成的

38 Struts2tag标签

自己找文档练习一下

39 Hibernate中纯sql和语句和hql语句的区别

java是面向对象,而sql是对面过程的,hibernate是对数据库操作的封装,是用面向对象的方法去操作,hql就是hibernate对数据库操作用面向对象的具体实现,而sql只是简单的对javax.sql.*;里面的包的封装,但是最终的结果是一样的都是转化为具体的sql语句
例如:假设有一张表 t_user而持久化后的pojo是User
查询所有记录
hql :       Query query = session.createQuery("From User");
而sql是: Query query = session .createSQLQuery("select * from t_user");

40介绍最近的项目;

41自己担当的模块流程,说说在该项目中用到的技术;

42是否用过AJAXDWR,用的是什么方式发送请求

43 struts2的拦截器

自定义一个拦截器需要三步:

1 自定义一个实现Interceptor接口(或者继承自AbstractInterceptor)的类。

2 在strutx.xml中注册上一步中定义的拦截器。

3 在需要使用的Action中引用上述定义的拦截器,为了方便也可将拦截器定义为默认的拦截器,这样在不加特殊声明
的情况下所有的Action都被这个拦截器拦截。

44 SSH框架搭建是否由自己完成;

45 Spring的事务管理;

声明式 和编程式

46 用过什么Hibernate的对应关系,

47在项目中参与了设计吗?

48中文自我介绍

49项目介绍

S2标签

51 事务

52你们用的是什么异常处理

53你做的项目名字用日语说一下

54自我介绍

用汉语介绍自己。有的要求日语。

55项目经验

56用日语读出某个项目概述

57怎么编写单体测试式样书

根据详细设计书和Source编写,分为大,中,小项目,写测试用例,编写Case点。

58有一个入力框,你会怎么写Case点?

非法字符,入力框的长度,边界值,是否为空,纯数字校验,入力值为最大值,及入力值大于最大值,及大于最大值加1;

59你写过多少单体测试Step

100行

60jsp页面的javascript中如果有错误,怎么调试?

           用浏览器的一些工具调试,例如火狐的开发者选项等。

61java中的集合类有哪些?它们的区别有哪些?

List set map 三个接口,查文档弄明白了,非常重要

62给你一个数组,里面有重复的数据,1、实现数组排序;2、去掉重复数据

63 IE78没出现之前,使用IE6时,jsp页面有问题的话,你是怎么解决的?

使用火狐浏览器查看

64 jsp 页面中Div层出错后,修改验证没问题了,但是,发给日方的时候,页面出错了,你怎么办?你有遇到过这个问题?

65 65写过50多条测试项,后台代码写了多少呢?

300多行

66用日语写过什么作品?在遇到简单的词汇,你会使用Copy键还是自己手敲呢?

      简单的会拷贝一些,个人认为,手写的比较有利于日语知识的提升。

67 介绍一下泛型

java泛型

什么是泛型

泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。

可以在集合框架(Collection framework)中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如 String)的对象。

因为 Map.get() 被定义为返回 Object,所以一般必须将 Map.get() 的结果强制类型转换为期望的类型,如下面的代码所示:

Map m = new HashMap();
m.put("key", "blarg");
String s = (String) m.get("key");

要让程序通过编译,必须将 get() 的结果强制类型转换为 String,并且希望结果真的是一个 String。但是有可能某人已经在该映射中保存了不是 String 的东西,这样的话,上面的代码将会抛出 ClassCastException。

理想情况下,您可能会得出这样一个观点,即 m 是一个 Map,它将 String 键映射到 String 值。这可以让您消除代码中的强制类型转换,同时获得一个附加的类型检查层,该检查层可以防止有人将错误类型的键或值保存在集合中。这就是泛型所做的工作。

泛型的好处

Java 语言中引入泛型是一个较大的功能增强。不仅语言、类型系统和编译器有了较大的变化,以支持泛型,而且类库也进行了大翻修,所以许多重要的类,比如集合框架,都已经成为泛型化的了。这带来了很多好处:

类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。

Java 程序中的一种流行技术是定义这样的集合,即它的元素或键是公共类型的,比如“String 列表”或者“String 到 String 的映射”。通过在变量声明中捕获这一附加的类型信息,泛型允许编译器实施这些附加的类型约束。类型错误现在就可以在编译时被捕获了,而不是在运行时当作 ClassCastException 展示出来。将类型检查从运行时挪到编译时有助于您更容易找到错误,并可提高程序的可靠性。

消除强制类型转换。 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。

尽管减少强制类型转换可以降低使用泛型类的代码的罗嗦程度,但是声明泛型变量会带来相应的罗嗦。比较下面两个代码例子。

该代码不使用泛型

List li = new ArrayList();
li.put(new Integer(3));
Integer i = (Integer) li.get(0);


该代码使用泛型

List<Integer> li = new ArrayList<Integer>();
li.put(new Integer(3));
Integer i = li.get(0);


在简单的程序中使用一次泛型变量不会降低罗嗦程度。但是对于多次使用泛型变量的大型程序来说,则可以累积起来降低罗嗦程度。

潜在的性能收益。 泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为未来版本的 JVM 的优化带来可能。

由于泛型的实现方式,支持泛型(几乎)不需要 JVM 或类文件更改。所有工作都在编译器中完成,编译器生成类似于没有泛型(和强制类型转换)时所写的代码,只是更能确保类型安全而已。


泛型用法的例子

泛型的许多最佳例子都来自集合框架,因为泛型让您在保存在集合中的元素上指定类型约束。考虑这个使用 Map 类的例子,其中涉及一定程度的优化,即 Map.get() 返回的结果将确实是一个 String:


Map m = new HashMap();
m.put("key", "blarg");
String s = (String) m.get("key");


如果有人已经在映射中放置了不是 String 的其他东西,上面的代码将会抛出 ClassCastException。泛型允许您表达这样的类型约束,即 m 是一个将 String 键映射到 String 值的 Map。这可以消除代码中的强制类型转换,同时获得一个附加的类型检查层,这个检查层可以防止有人将错误类型的键或值保存在集合中。

下面的代码示例展示了 JDK 5.0 中集合框架中的 Map 接口的定义的一部分:


public interface Map<K, V> {
public void put(K key, V value);
public V get(K key);
}

注意该接口的两个附加物:

类型参数 K 和 V 在类级别的规格说明,表示在声明一个 Map 类型的变量时指定的类型的占位符。

在 get()、put() 和其他方法的方法签名中使用的 K 和 V。

为了赢得使用泛型的好处,必须在定义或实例化 Map 类型的变量时为 K 和 V 提供具体的值。以一种相对直观的方式做这件事:

Map<String, String> m = new HashMap<String, String>();
m.put("key", "blarg");
String s = m.get("key");

当使用 Map 的泛型化版本时,您不再需要将 Map.get() 的结果强制类型转换为 String,因为编译器知道 get() 将返回一个 String。

在使用泛型的版本中并没有减少键盘录入;实际上,比使用强制类型转换的版本需要做更多键入。使用泛型只是带来了附加的类型安全。因为编译器知道关于您将放进 Map 中的键和值的类型的更多信息,所以类型检查从执行时挪到了编译时,这会提高可靠性并加快开发速度。


向后兼容

在 Java 语言中引入泛型的一个重要目标就是维护向后兼容。尽管 JDK 5.0 的标准类库中的许多类,比如集合框架,都已经泛型化了,但是使用集合类(比如 HashMap 和 ArrayList)的现有代码将继续不加修改地在 JDK 5.0 中工作。当然,没有利用泛型的现有代码将不会赢得泛型的类型安全好处。

68 DJunit中测试调用什么方法

69 struts1struts2的区别

70 hibernate ibatis 的区别以及优缺点。

71 BUG票写过吗?

72 spring的理解

73 每千行的测试case大概有多少个。

74 list如何去除重复元素。

方法一:循环元素删除 
// 删除ArrayList中重复元素 


方法二:通过HashSet剔除
// 删除ArrayList中重复元素 


方法三: 删除ArrayList中重复元素,保持顺序
// 删除ArrayList中重复元素,保持顺序 

75 SSH的工作流程

76 SSI的工作流程。

77 开始菜单,事项书,工具,删除,追加,修改,进度表,检索等常用、敏感词的日语单词。

78 orcal获取系统当前时间

79 orcal 分页

80 增删改查语句

81 jsp内置对象

82 hibernate 一对一,一对多,多对多联系

83 java面向对象的四大特征

84 jsp验证时怎样取数据

85 struts2如何存取数据

86 orcal 左右连接

87 数据库用的什么

88 操作系统用的是什么

89 JunitDJunit有什么区别

Djunit简介:是dgic公司开发的免费Eclipse插件,在标准Junit测试框架的基础上,实现了对VirtualMock技术的支持,同时集成了计算覆盖率的支持。

90 struts的数据提交怎样实现

91 一张表中有多条数据,怎样查询第一条

92 jsp基本动作

93 struts 的配置

94 webservlet 传送

95 存储过程

96 一个项目的流程

97 一个输入框,模拟测试点

98 A=B,能写出几个测试用例

99 用哪个方法判断两个值相等?说明equals==的区别。

==号,他比较的是一个对象在内存中的地址值,
比如2个字符串对象
String s1 = new String("str");
String s2 = new String("str");
如果用==号比较,会返回false,因为创建了两个对象,他们在内存中地址的位置是不一样的。

equals的情况比较复杂,它是java.lang.Object类中的一个方法。因为java中所有的类都默认继承于Object,所以所有的类都有这个方法。

在Object类源码中是这样写的。
public boolean equals(Object obj) {
 return (this == obj);
}
他同样使用==号进行内存地址的比较。但是许多java类中都重写了这个方法,比如String。
public boolean equals(Object anObject) {
 if (this == anObject) {
     return true;
 }
 if (anObject instanceof String) {
     String anotherString = (String)anObject;
     int n = count;
     if (n == anotherString.count) {
  char v1[] = value;
  char v2[] = anotherString.value;
  int i = offset;
  int j = anotherString.offset;
  while (n-- != 0) {
      if (v1[i++] != v2[j++])
   return false;
  }
  return true;
     }
 }
 return false;
    }

String里的方法,如果==号比较不相等,还会进行一下值的比较。
所以equals方法具体的作用要看当前的那个类是如何实现重写父类中该方法的。如果没有重写该方法,那么他和==号等价。

100 说几个常见的runtime exception

java.lang.NullPointerException

 java.lang.ClassNotFoundException

 java.lang.ArithmeticException

java.lang.ArrayIndexOutOfBoundsException

java.lang.IllegalArgumentException

java.lang.IllegalAccessException

101 介绍一下你的公司

102 对详细式样书的感觉怎么样,理解方面有没有问题?

103 详细式样书遇到问题怎么解决?

104 QA票写过没有,发给谁?主要写一些什么东西?

(发给组长,由组长发给日方客户)

105 测试式样书写过吗?根据什么来写?

相关推荐