大型软件公司.Net面试常见题(含答案)

1、a=10,b=15,在不用第三方变量的前提下,吧a、b互换

2、已知数组int[] max={6,5,2,9,7,4,0};用快速排序算法按降序对其进行排列,并返回数组

 

3、请简述面向对象的多态的特性及意义!

面向对象的编程使用了派生继承以及虚函数机制。

一个本来指向基类的对象可以指向其派生类的,并访问从基类继承而来的成员变量和函数。

而虚函数是专门为这个特性设计的,这个函数在每个基类的派生类中都是同一个名字,但函数体却并不一定相同,

派生类往往为实现自己的功能而修改这个虚函数,这样用一个指针就能够实现对多种不同的派生类的访问,并实现其派生类的特定功能(代码)。。。

4、session喜欢丢值且占内存,Cookis不安全,请问用什么办法代替这两种原始的方法

用ViewState

stateserver

5、对数据的并发采用什么办法进行处理较好。

可以控制链接池的连接数量条件好的话,可以用负载平衡。

6、已知Oracle数据库有GD和ZS两个数据库,GD数据库v_s表有数据写入时,从v_s表中提取最新数据到ZS数据库的D_E表中。请问用什么办法解决这一问题?如果又碰到不能互访的问题时,又用什么办法解决?

一个中型或大型公司往往由地理上分散的部门所组成,这些部门通常需要进行数据共享。针对这些共享数据,可以将其存储在某个站点上,需要的用户都从这个站点上存取。这种方案的优点是数据的一致性容易保证,但其缺点也是很突出的,那就是该站点的负载大、网络负载大,远程用户的数据响应迟缓。数据复制技术可以有效地解决这个问题,它通过将这些共享数据复制到位于不同地点的多个数据库中,从而实现数据的本地访问,减少了网络负荷,并提高了数据访问的性能,而且通过对数据库中的数据定期同步(通常是每天晚上),从而确保了所有的用户使用同样的、最新的数据。该技术适用于用户数量较大、地理分布较广、而且需要实时地访问相同数据的应用模式。

 

数据复制的概念及特点
 
1、数据复制的概念及分类
数据复制,就是将数据库中的数据拷贝到另外一个或多个不同的物理站点上,从而保持源数据库与目标数据库中指定数据的一致性。
按照数据复制的实时性,数据复制可分为同步数据复制和异步数据复制。同步数据复制是指将本地生产数据以完全同步的方式复制到异地,每一本地IO交易均需等待远程复制的完成方予以释放。异步数据复制则是指将本地生产数据以后台同步的方式复制到异地,每一本地IO交易均正常释放,无需等待远程复制的完成。同步复制实时性强,远端数据与本地数据完全同步。但这种方式受带宽影响较大,数据传输距离较短。异步复制不影响本地交易,传输距离长,但其数据比本地数据略有延迟。在异步复制环境中,对于所有应用最关键的就是要确保数据的一致性。

 

按照复制站点的类型,数据复制可分为多主控站点复制、物化视图复制及混合复制。多主控站点复制也称为对等站点复制,其中每个站点都是主控站点,都需要与其他站点进行信息交流,各站点之间是平等的。物化视图复制包含一个主控站点、一个或多个物化视图站点,

 

物化视图中的内容可以为目标主对象在某个时间点的全部拷贝或部分拷贝,其中目标主对象既可以是主控站点上的表也可以是物化视图站点上的主物化视图。混合复制包含多个主控站点和多个物化视图站点,是主控站点复制和物化视图复制的结合体,适合于复杂的业务情况。

 

2、数据复制的特点
数据复制通过在多个站点上建立备份,能够提高数据的安全性,同时也提高了数据的可用性,这是因为如果一个站点出现了问题,用户可以选择其他站点继续进行操作,应用系统还可继续运行,从而数据复制提供了容错保护机制。

 

然而数据复制最基本的功能是提高数据库的性能。它通过将远程数据库中的数据复制到本地,使得应用能够就近访问数据,从而降低网络传输负载,提高效率。而且在数据复制系统中,可以提供多个站点之间的负载平衡,让这几个用户使用这个服务器,另外几个用户可以

 

使用其他的服务器,以避免某些站点负载过重。

 

物化视图还提供了按子集进行复制,这样各站点就可只复制自己需要的数据,也能减轻网络的传输量。

 

数据复制的实现方法

 

在具体的实现之前,首先要做好设计与规划。这就需要细致分析具体的业务情况,设计出一套能够满足业务需要的方案。通常在设计过程中,需要确定出要建立的数据库站点,各站点的类型,需要复制的数据对象,以及同步方式、冲突解决方案等内容。

 

在设计完成之后,就可具体来实现数据复制,实现主要包括以下几步:

 

(1)创建复制站点

 

(2)创建组对象

 

(3)配置冲突解决方案

 

下面我们举一个例子来说明各步具体需要完成的工作。在这个例子中我们采用多主控站点复制方式,设有两个主控站点和两个共享数据表。两个主控站点分别为:处理站点(cl.world)和解释站点(js.wo rld);两个数据表为测区( survey)和测线( line)。

 

STEP1 创建复制站点

 

(1)首先以SYSTEM身份登陆主站点数据库cl.worldCONNECT system/manager@cl.world

 

(2)创建用户—复制管理员,并为该用户授权复制管理员负责复制站点的创建和管理,每个复制站点都必须创建复制管理员:

 

CREATE USER repadmin IDENTIFIED BY repadmin;

 

BEGIN

 

 DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (username => ’repadmin’);

 

END;

 

(3)为本站点指定传播者

 

传播者负责将本地最新更新的数据传播到其他站点上:

 

BEGIN

 

 

 

 DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username => ’repadmin’);

 

 

 

END;

 

(4)为本站点指定接收者

 

接收者负责接收其他站点上的传播者传送过来的数据:

 

BEGIN

 

 

 

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (

 

 username => ’repadmin’,

 

 privilege_type => ’receiver’,

 

 list_of_gnames => NULL);

 

END;

 

(5)确定清除时间

 

为了使传送过来事务队列不致过大,需要将成功加载的事务从事物队列里清除掉,这里设定每小时清除一次。

 

 

BEGIN

 

 DBMS_DEFER_SYS.SCHEDULE_PURGE (

 

next_date => SYSDATE,

 

interval => ’SYSDATE + 1/24’,

 

delay_seconds => 0);

 

END;

 

在建立好站点cl.world后,以同样的方法创建站点js. world。

 

(6)创建各主控站点之间的调度链接

 

创建各主控站点之间的调度链接需要先在各主控站点间建立数据库链接,之后为每个数据库链接定义调度时间。

 

首先,在处理站点上建立与解释站点的数据库链接,这里需要先建立一个公用数据库链接,供其他私有数据库链接来使用。

 

 

CREATE PUBLIC DATABASE LINK js.world USING ’js.world’;

 

 

CREATE DATABASE LINK js.world CONNECT TO repadmin

 

IDENTIFIED BY repadmin;

 

同样,在解释站点上建立与处理站点的数据库链接

 

 

CREATE PUBLIC DATABASE LINK cl.world USING ’cl.world’;

 

 

CREATE DATABASE LINK cl.world CONNECT TO repadmin

 

IDENTIFIED BY repadmin;

 

调度链接确定本站点上的事务向其他站点发送的频度,下面的代码为10分钟一次:

 

 

BEGIN

 

DBMS_DEFER_SYS.SCHEDULE_PUSH (

 

destination => ’js.world’,

 

interval => ’SYSDATE + (1/144)’,

 

next_date => SYSDATE,

 

parallelism => 1,

 

execution_seconds => 1500,

 

delay_seconds => 1200);

 

END;

 

在解释站点上做相同的工作STEP2 创建主控组在复制环境中,Oracle用组来管理复制对象。通过将相关的复制对象放在一个组里,从而方便对大量数据对象的管理。

 

 

 

这里我们假设用户模式integr ation 在处理站点和解释站点都已存在,而且表测区(survey )和测线(line)也已经创建。

 

(1)创建主控组对象

 

 

BEGIN

 

DBMS_REPCAT.CREATE_MASTER_REPGROUP (

 

gname => ’inte_repg’);

 

END;

 

(2)向主控组中添加数据对象,将测区表survey加入到组inte_repg中

 

BEGIN

 

 

 

DBMS_REPCAT.CREATE_MASTER_REPOBJECT (

 

gname => ’inte_repg’,

 

type => ’TABLE’,

 

oname => ’survey’,

 

sname => ’integration’,

 

use_existing_object => TRUE,

 

copy_rows => FALSE);

 

END;

 

以同样的方法将测线表line 加入到组inte_repg中

 

(3)在主控组中添加其他参与复制的站点,数据库之间的同步方式在此指定

 

BEGIN

 

DBMS_REPCAT.ADD_MASTER_DATABASE (

 

gname => ’inte_repg’,

 

master => ’js.world’,

 

use_existing_objects => TRUE,

 

copy_rows => FALSE,

 

propagation_mode => ’ASYNCHRONOUS’);

 

END;

 

(4)如果可能出现冲突,则需要配置冲突解决方案。冲突解决方案将在后面介绍。

 

(5)为每个对象生成复制支持

 

BEGIN

 

DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (

 

sname => ’integration’,

 

oname => ’survey’,

 

type => ’TABLE’,

 

min_communication => TRUE);

 

END;

 

测线表line也一样

 

(6)重新开始复制

 

BEGIN

 

DBMS_REPCAT.RESUME_MASTER_ACTIVITY (

 

gname => ’inte_repg’);

 

END;

 

以同样的方式设置解释站点。设置成功后,数据复制过程就宣告完毕,库中的数据就可进行复制。

 

数据复制中冲突的解决方案

 

在复制环境中,尽管在数据库和应用程序设计过程中,会尽量避免各站点间冲突的发生,但完全避免冲突的可能性还是比较小的,那么一旦冲突发生,就需要一个按照具体业务规则的冲突解决机制,来使得各站点的数据保持一致。

 

首先需要分析哪些对象容易出现冲突。通常来说,静态的数据变化少,冲突出现的可能性也小;而有些数据变化非常大,冲突出现的可能性也大。确定了冲突易发的对象后,需要确定怎样解决冲突,比如在各站点之间建立优先次序,在数据不一致时,以某个站点上的为

 

准;或以某个站点上最新的修改为准。

 

Oracle提供了多中冲突解决方案,具体包括:针对更新冲突的方案、针对唯一性冲突的方案、针对删除冲突的方案。除了这些方案以外,用户还可以自定义冲突解决方法。每种方案都有自己的适用情况,那么我们需要根据具体的业务来选择合适的冲突解决方案。

 

7、已知Oracle数据库a,b

现在在a用户权限下,访问b数据库sql语句为select a.* From b a,请改正这一句Sql的写法

select a.* from b.b a

8、当对数据库进行海量级的数据插入时,数据库出现报错,错误原因可能有哪些,以你的经验谈谈你的解决办法

 

对于oracle数据库来说,可能出现的问题包括:

 

1. 回滚区间空间不足  --- 解决方法,增加表空间

 

2. 数据表空间不足 ---- 增加数据表空间

 

3. 表空间不足 ---- 增加表空间(oracle数据表有空间限制)

 

4. 临时表空间不足 --- 因为计算索引使用临时表空间,增加表空间或者暂时不使用索引,数据导入完毕再重新建立索引

 

5.另外一些原因,主要是垃圾数据造成的,比如外键匹配,主键冲突,单一索引冲突等。

 

9、算法分析

AH 20060625 12 44 01 CAD001

AH 20060625 12 44 01 CAD001

AH 20060625 13 44 02 CAD001

AH 20060625 14 44 03 CAD001

说明:第二列表示日期,第三列表示温度,第四列表示水位,第五列表示流量,第6列表示水位测站编码,每一列表示一个字段

很明显第一条数据和第二条数据重复,然数据表中有主键和外键的约束,是不允许有重复的数据存在的,请构造算法将重复的数据Del掉

 

DELETE FROM TABLE_NAME

 

WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D

 

WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2);

 

10、1、兔子繁殖问题(有一对兔子,从出生后4个月起,每2个月生一对兔子,第几个月共有几只兔子)

 

int a = 1, b = 0, c = 0;
            for (int i = 1; i <= 10; i++)
            {
                c = a;
                a = a + b;
                b = c;
                Console.WriteLine("第{0}个月有{1}对兔子", i, b);
            }

 

 

11、什么是响应式布局?它是运用什么技术实现的?

1、概念

响应式网页设计最初是由 Ethan Marcotte 提出的一个概念:为什么一定要为每个用户群各自打造一套设计和开发方案?Web设计应该做到根据不同设备环境自动响应及调整。当然响应式Web设计不仅仅是关于屏幕分辨率自适应以及自动缩放的图片等等,它更像是一种对于设计的全新思维模式;我们应当向下兼容、移动优先。

简而言之,就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。这个概念是为解决移动互联网浏览而诞生的。
响应式布局可以为不同终端的用户提供更加舒适的界面和更好的用户体验,而且随着目前大屏幕移动设备的普及,用“大势所趋”来形容也不为过。随着越来越多的设计师采用这个技术,不仅看到很多的创新,还看到了一些成形的模式。

2、优点

面对不同分辨率设备灵活性强
能够快捷解决多设备显示适应问题

3、缺点

兼容各种设备工作量大,效率低下
代码累赘,会出现隐藏无用的元素,加载时间加长
其实这是一种折中性质的设计解决方案,多方面因素影响而达不到最佳效果
一定程度上改变了网站原有的布局结构,会出现用户混淆的情况

4、Meta标签定义

使用 viewport meta 标签在手机浏览器上控制布局

<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1" />

通过快捷方式打开时全屏显示

<meta name="apple-mobile-web-app-capable" content="yes" />

隐藏状态栏

<meta name="apple-mobile-web-app-status-bar-style" content="blank" />

iPhone会将看起来像电话号码的数字添加电话连接,应当关闭

<meta name="format-detection" content="telephone=no" />

5、使用 Media Queries 适配对应样式

常用于布局的CSS Media Queries有以下几种

6、设备类型(media type):

all所有设备
screen 电脑显示器
print打印用纸或打印预览视图
handheld便携设备
tv电视机类型的设备
speech语意和音频盒成器
braille盲人用点字法触觉回馈设备
embossed盲文打印机
projection各种投影设备
tty使用固定密度字母栅格的媒介,比如电传打字机和终端

7、设备特性(media feature):

width浏览器宽度
height浏览器高度
device-width设备屏幕分辨率的宽度值
device-height设备屏幕分辨率的高度值
orientation浏览器窗口的方向纵向还是横向,当窗口的高度值大于等于宽度时该特性值为portrait,否则为landscape
aspect-ratio比例值,浏览器的纵横比
device-aspect-ratio比例值,屏幕的纵横比

12、对MVC的理解

简单来说,MVC是一种流行的程序架构,获得C#、Java、PHP、Ruby等多种语言的支持。MVC是 模型(Model) 、视图(View)、控制器(Control) 的英文首字母的缩写,核心思想是:视图和用户交互 通过事件导致控制器改变 控制器改变导致模型改变 或者控制器同时改变两者 模型改变 导致视图改变 或者视图改变 潜在的从模型里面获得参数 来改变自己。
MVC(Model-View-Controller),即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
视图(View):代表用户交互界面,MVC设计模式对于视图的处理是限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。
模型(Model):业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC的核心。
控制(Controller):可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求,但是它却不做任何的数据处理。
它的优势在与:开发人员可以只关注整个结构中的其中某一层,可以很容易的用新的实现来替换原有层次的实现,可以降低层与层之间的依赖,有利于标准化,利于各层逻辑的复用

 13、new有几种用法

第一种:new Class();
第二种:覆盖方法
public new XXXX(){}
第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数

14、如何把一个array复制到arrayList里

foreach( object o in array )arrayList.Add(o);

15、datagrid.datasouse可以连接什么数据源 

dataset,datatable,dataview , IList

16、在asp.net中各种文件所对应的后缀名:

.sln:    解决方案文件;
csproj:  项目文件,
.aspx.cs:,该文件称作代码隐藏类文件(.aspx.cs)。
.cs: 类模块代码文件。业务逻辑处理层的代码。
.asax:Global.asax 文件(也叫做 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应 ASP.NET 或 HTTP 模块引发的应用程序级别事件的代码。
.aspx.resx/.resx:资源文件
.asmx:asmx 文件包含 WebService 处理指令,并用作 XML Web services 的可寻址入口点
.vsdisco(项目发现)文件 基于 XML 的文件,它包含为 Web 服务提供发现信息的资源的链接 (URL)。
.htc:一个HTML文件,

.ashx:   一般处理程序

.ascx:   用户控件

 

posted @ 2017-04-24 11:10  折翅女孩  阅读(400)  评论(0编辑  收藏  举报