1.做为测试工程师,你认为哪些被测对象在哪些场景下可能bug最多,为什么?
1.项目第一次提交测试的时候,
2.没有规范的混乱开发模式下开发的项目.
3.部署环境迁移之后
4.配置文件修改之后
5.代码重构之后
2. 如何来评估测试对功能或代码的覆盖是否完整?
1首先是对用户需求的提取要全面深入,2就是根据不同需求通过不同测试方法设计测试用例3.用法工具EclEmma
3.代码静态review,通常发现什么问题?
一是小的issue(比如命名规范,代码标准);二是大的issue(比如内存泄露);最后是那种非“issue”,而是设计是否优雅简单,代码是否干净可读的问题,这种问题不会导致程序出错,在短期内甚至没有任何问题,只会在一段时间之后引起维护成本,可扩展性之类的问题。
4.支撑海量请求,集群部署web站点进行性能调优,可以从哪些方面入手?具体涉及到哪些技术
1 均衡系统压力,减少单个服务器因压力过于集成而超负荷运转的发生几率。
2 加快用户的访问的速度。
3 自动备援,避免因单点故障而导致整个系统瘫痪的情况发生。
4 日后系统的便于扩展,通过增加相应的服务器节点即可提高整个系统的承载能力。
1 均衡服务器
lb1,lb2是两个安装了lvs的均衡服务器,两个服务器中一个是工作服务器,一个冗余服务器,冗余服务器通过heartbeat侦测工作服务器是否出现故障,如果发现是,它将自动切换成工作服务器。
2 缓存服务器
安装squid,用于缓存用户对应用服务器请求的返回结果,以减少应用服务器的压力,提供用户访问的速度。
3 应用服务器
安装apache,用于运行和对外发布Web应用。
4 资源服务器
安 装lighttpd,用于存放和对外发布静态资源,包括图片,css,javascript...,资源存放在nfs文件系统上。用户对资源的访问无须经 过缓存服务器的缓存,但为了减少压力,资源服务器应该合理设置客户端缓存,以减少单个用户在短时间内对相同资源的频繁访问。
5 Session 服务器
用于存放应用的Session文件,文件存放在
nfs 文件系统上。
6 数据库服务器
安装mysql,为Web程序提供数据存储服务 。 数据库服务器以
mysql 集群的方式部署。
5.持续集成对公司价值?怎么样设计一套持续集成建设方案?
1 减少风险
通过每天集成变化的代码并发布,我们将减少项目的风险。这样做将可以推动尽早发现缺陷;尽早估量软件的质量;尽早排除假设。
2 减少重复的过程
3 产生可部署的软件
4 使得项目更加透明
5 建立项目信心
使用SVN+CruiseControl+ANT实现持续集成
Java语言基础,例如类得构造方法为什么this()/super()必须放在第一行,try-catch-finally的语句块执行顺序算法问题,例如找出一个数组中重复的数字,算法里的动态规划数据库问题,给出一种业务需求,设计一个数据库结构另外还有设计模式,Struts/Spring中的关键技术实现原理及应用场景二次乘法单向链表反转接口和抽象类散列表的应用 C++默认有几个函数,如何实现
1)Java接口和抽象类的区别
2)面向对象设计题(多重继承与接口的使用,如何扩展已有类)
3)求二叉树两个节点的最近祖先节点
1)常用的设计模式,设计线程安全的Singleton
2)求字符串S中长度为n的字符排列集和,比如"abc"中长度为2的"ab", "ba"
软性的经验分享:
(1)有没有遇到过工作上需要做超出自己工作范围的事情的时候,如何处理
(2)遇到上下游的衔接不畅,例如自己的工作要继续必须依赖其他人的工作,出现衔接问题如何处理
(3)有没有遇到过流程上的问题,如何解决的
(4)项目紧张,关键点不同的工程师看法不一致,但是没有足够的时间要验证所有人的观点,如何处理
等等
6.tcp ip协议TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层