一道关于数据库的面试题

一道关于数据库的面试题,第1张

1select ssid from s,t where ttid in ('1','2')

2

select ssid ,ssname

from s,

(select sid,count(tid) from st where score<60 group by sid) st1

where ssid = st1sid

3

select st1sid

from

(select sid,score from st where tid='1') st1

,(select sid,score from st where tid='2') st2

where st1score > st2score

and st1sid = st2sid

测试技术面试题

1、什么是兼容性测试?兼容性测试侧重哪些方面?

参考答案

兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。

兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。

兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了。

兼容和配置测试的区别在于,做配置测试通常不是Clean OS下做测试,而兼容测试多是在Clean OS的环境下做的。

2、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?

参考答案:

1、检查系统是否有中毒的特征;

2、检查软件/硬件的配置是否符合软件的推荐标准;

3、确认当前的系统是否是独立,即没有对外提供什么消耗CPU资源的服务;

4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;

5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况。

3、测试的策略有哪些?

参考答案:

黑盒/白盒,静态/动态,手工/自动,冒烟测试,回归测试,公测(Beta测试的策略)

4、正交表测试用例设计方法的特点是什么?

参考答案:

用最少的实验覆盖最多的 *** 作,测试用例设计很少,效率高,但是很复杂;

对于基本的验证功能,以及二次集成引起的缺陷,一般都能找出来;但是更深的缺陷,更复杂的缺陷,还是无能为力的;

具体的环境下,正交表一般都很难做的。大多数,只在系统测试的时候使用此方法。

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

参考答案:

就是Bugzilla的状态转换图。

6、你觉得bugzilla在使用的过程中,有什么问题?

参考答案:

界面不稳定;

根据需要配置它的不同的部分,过程很烦琐。

流程控制上,安全性不好界定,很容易对他人的Bug进行误 *** 作;

没有综合的评分指标,不好确认修复的优先级别。

7、描述测试用例设计的完整过程?

参考答案:

需求分析 + 需求变更的维护工作;

根据需求 得出测试需求;

设计测试方案,评审测试方案;

方案评审通过后,设计测试用例,再对测试用例进行评审;

8、单元测试的策略有哪些?

参考答案:

逻辑覆盖、循环覆盖、同行评审、桌前检查、代码走查、代码评审、景泰数据流分析

9、LoadRunner分哪三部分?

参考答案:

用户动作设计;

场景设计;

测试数据分析;

10、LoadRunner进行测试的流程

参考答案:

1、 测试测试

2、 创建虚拟用户脚本

3、 创建运行场景

4、 运行测试脚本

5、 监视场景

6、 分析测试的结果

以上,最好是结合一个案例,根据以上流程来介绍。

什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样?

参考答案:

在同一时间点,支持多个不同的 *** 作。

LoadRunner中提供IP伪装,集合点,配合虚拟用户的设计,以及在多台电脑上设置,可以比较好的模拟真实的并发。

集合点,即是多个用户在某个时刻,某个特定的环境下同时进行虚拟用户的 *** 作的。集合点失败,则集合点的才 *** 作就会取消,测试就不能进行。

12、使用QTP做功能测试,录制脚本的时候,要验证多个用户的登录情况/查询情况,如何 *** 作?

参考答案:

分析用户登录的基本情况,得出一组数据,通过性测试/失败性测试的都有(根据TC来设计这些数据),然后录制登录的脚本,将关键的数据参数化,修改脚本,对代码进行加强,调试脚本。

13、QTP中的Action有什么作用?有几种?

参考答案:

Action的作用

 用Action可以对步骤集进行分组

 步骤重组,然后被整体调用

 拥有自己的sheet

 组合有相同需求的步骤,整体 *** 作

 具有独立的对象仓库

Action的种类

 可复用Action

 不可复用Action

 外部Action

14、TestDirector有些什么功能,如何对软件测试过程进行管理?

参考答案:

需求管理

 定义测试范围

 定义需求树

 描述需求树的功能点

测试计划

 定义测试目标和测试策略。

 分解应用程序,建立测试计划树。

 确定每个功能点的测试方法。

 将每个功能点连接到需求上,使测试计划覆盖全部的测试需求。

 描述手工测试的测试步骤

 指明需要进行自动测试的功能点

测试执行

 定义测试集合。

 为每个测试人员制定测试任务和测试日程安排。

 运行自动测试。

缺陷跟踪

 记录缺陷

 查看新增缺陷,并确定哪些是需要修正的

 相关技术人员修改缺陷

 回归测试

 分析缺陷统计图表,分析应用程序的开发质量

Zygote可以说是Android开发面试很高频的一道问题, 但总有小伙伴在回答这道问题总不能让面试满意, 在这你就要搞清楚面试问你对Zygote的理解时,他最想听到的和其实想问的应该是哪些? 下面我们通过以下几点来剖析这道问题!

Zygote的作用分为两点:

关于这个问题答出了这两点那就是OK了。可能大部分小伙伴可能能答出第二点,第一点就不是很清楚。SystemServer也是Zygote启动的,因为SystemServer需要用到Zygote准备好的系统资源包括:

直接从Zygote继承过来就不需要重新加载过来,那么对性能将会有很大的提升。

在说Zygote启动流程之前, 先明确一个概念:启动三段式, 这个可以理解为Android中进程启动的常用套路, 分为三步骤:

这里要了解LOOP循环是什么,其实LOOP作用是不停地 接受消息 , 处理消息 ,消息的来源可以是 Soket 、 MessageQueue 、 Binder 驱动发过来的消息,但无论消息从哪里来,它整个流程都是去接受消息,处理消息。这个启动三段式,它不光是Zygote进程是这样的,只要是有独立进程的,比如说系统服务进程,自己的应用进程都是如此。

Zygote进程的启动取决于init进程,init进程是它是linux启动之后用户空间的第一个进程,下面看一下 启动流程

3启动配置文件中定义的系统服务,其中Zygote服务就是定义在配置中的

4同时启动的服务除了Zygote之外还有一些别的系统服务也是会启动的,比如说ServiceManager进程,它是通过fork+execve系统调用启动的

在initrc 文件中会import /init${rozygote}rc,initzygoteXX,XX指的是32或者64,对我们没差我们直接看initzygote32rc即可。配置文件比较长,这里做了截取保留了Zygot相关的部分。

说完了启动配置呢,这里来聊一下启动进程, 启动进程有两种方式:

第一种:fork+handle

第二种:fork+execve

两者看起来差不多,首先首先都会调用fork函数创建子进程,这个函数比较奇特会返回两次,子进程返回一次,父进程返回一次。 区别在于:

主要分为两部分Native层处理和Java层处理,Zygote进程启动之后,它执行了execve系统调用,它执行的是用C++写的二进制的可执行程序里的main函数作为入口,然后在Java层运行!

先来看一下Native层的处理流程

在app_maincpp文件,AndroidRuntimecpp文件。我们可以找到几个主要函数名

根据上述代码,你会发现在我们的应用里直接就可以 JNI 调用了,并不需要创建虚拟机。因为应用进程是Zygote进程孵化出来的,继承了父进程的拥有虚拟机,只需要重置数据即可。

接着看一下Java层的处理,具体可参考ZygoteInit文件的main方法

1预加载资源,比如常用类库、主题资源及一些共享库等

2启动SystemServer进程

3进入Socket 的Loop循环 会看到的ZygoteServerrunSelectLoop(…)调用

Zygote启动流程中需要主要以下2点问题

最后

我是从小公司跳出来的,最终入职OPPO,说实话这段时间的经历让我深深地感受到,我们为跳槽做的一些临时抱佛脚的提升跟那些大佬的沉淀比起来太渺小了。我们都知道找资料学习、刷面试题,但也许只能应付这一次的面试,后面还是会技术发愁,那些短时间背下来的东西迟早会忘掉, 大家还是做好长期提升自己的准备,好好沉淀的东西最后才是属于自己的。

说说当时的面试过程,我是内推获得的面试机会,很感谢当时帮我内推的兄弟,总共三轮面试,两轮技术,一轮HR面,当天面试结束。

我10:10分到的公司,10:30开始面试,第一轮面试将近一个小时,聊的点我基本上都答得上来,自我感觉良好。然后面试官让我等一下,他去叫他们老大来给我二面,我等了有二十几分钟吧,二面有一个多小时,这次问的比较深,有些地方答的有些嗑吧,总体来说我自己是满意的。HR面约到下午了,整个流程下来每轮面试官都让人感觉很不错,我自己做的准备也让我面试感觉下来很爽。

我把面试遇到过的以及自己学习用到过相关内容都整理到一起了,方便自己进行复盘和后续的查漏补缺:

一、 Java基础

11 静态内部类和非静态内部类的比较

12 多态的理解与应用

13 java方法的多态性理解

14 java中接口和继承的区别

15 线程池的好处,详解,单例(绝对好记)

16 线程池的优点及其原理

17 线程池的优点(重点)

18 为什么不推荐通过Executors直接创建线程池

19 不怕难之BlockingQueue及其实现

110 深入理解ReentrantLock与Condition

111 Java多线程:线程间通信之Lock

112 Synchronized 关键字原理

113 ReentrantLock原理

114 HashMap中的Hash冲突解决和扩容机制

114 Java并发

115 Java虚拟机

116 JVM常见面试题

117 JVM内存结构

118 类加载机制/双亲委托

二、 Android基础

21 Activity知识点(必问)

22 Fragment知识点

23 Service知识点

24 Intent知识点

25 数据存储

三、UI控件篇

31 屏幕适配

32 主要控件优化

33 事件分发与嵌套滚动

34 动态化页面构建方案

四、网络通信篇

41 网络协议

五、架构设计篇

51 MVP架构设计

52 组件化架构

六、性能优化篇

61 启动优化

62 内存优化

63 绘制优化

64 安装包优化

七、源码流程篇

71 开源库源码分析

72 Glide源码分析

73 day 20 面试题:Glide面试题

74 聊一聊关于Glide在面试中的那些事

75 面试官:简历上如果写Glide,请注意以下几点…

76 Glide OOM问题解决方法汇总

77 LeakCanary源码分析

78 Ok>

1

update

t

set

logdate=to_date('2003-01-01','yyyy-mm-dd')

where

logdate=to_date('2001-02-11','yyyy-mm-dd');

2

select

from

t

where

name

in

(select

name

from

t

group

by

name

having

coung()>1)

order

by

name;--没说清楚,到底是升序还是降序

3

select

ID,NAME,ADDRESS,PHONE,LOGDATE

from

(

select

t,row_number()

over(partition

by

name

order

by

name)

rn

from

t

)

where

rn

=

1;

4

update

t

set

(address,phone)=

(select

address,phone

from

e

where

ename=tname);

5

select

from

t

where

rownum

minus

select

from

t

where

rownum

也没什么特别的地方,有些题目用oracle特有的函数去做会比较简单,像在第三题中用到的oracle的分析函数,以及在第一题中用到的oracle的to_char()函数。

这几个题目主要是看你能不能使用oracle的函数去处理

以上就是关于一道关于数据库的面试题全部的内容,包括:一道关于数据库的面试题、求软件测试面试问题、大厂Android开发高频面试问题:说说你对Zygote的理解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9859465.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)