大型软件公司DOTNET面试题

2023-10-14 23:32

本文主要是介绍大型软件公司DOTNET面试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

 

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

 

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

 

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

 

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

 

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

 

7:已知Oracle数据库a,b

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

 

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

 

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掉

 

10:javascript算法

已知a,b,现在点鼠标a会向b游动,鼠标停,a会停下来

请实现"跑步算法"

 

1、答案

 

a=a+b;

b=a-b;

a=a-b;

 

还有变态要求,需要代码最短呢。有两个结果:

1) a^=b^(b^=a^b); // 13个字节

2) a=b+(b=a)*0; // 11个字节

 

2、答案(如果不限定算法,其实可以直接用Array.Sort()方法的)

 

public class TestQuickSort {

 

    private int[] array = null;

 

    private void quickSort(int lowest, int highest) {

        if (array == null || lowest < 0 || lowest >= highest

                || highest >= array.length) {

            return;

        }

        int low = lowest;

        int high = highest;

        int key = low++;

        for (; low <= high;) {

            if (key < high) {

                if (array[key] > array[high]) {

                    array[high] = array[key] + (array[key] = array[high]) * 0;

                    key = high;

                }

                high--;

            }

 

            if (key > low) {

                if (array[key] < array[low]) {

                    array[low] = array[key] + (array[key] = array[low]) * 0;

                    key = low;

                }

                low++;

            }

        }

        quickSort(lowest, key - 1);

        quickSort(key + 1, highest);

    }

 

   

    public static void main(String[] args) {

        TestQuickSort test = new TestQuickSort();

        int[] array = {6,5,2,9,7,4,0};

        test.array = array;

        test.quickSort(0, array.length - 1);

        int length = test.array.length;

        for (int i = 0; i < length; i++) {

            System.out.println(test.array[i]);

        }

    }

}

 

不要用冒泡排序法很慢,选择排序好些,但题意是快速排序算法

快速排序算法的基本思想:

快速排序的基本思想是基于分治策略的。对于输入的子序列ap..ar,如果规模足够小则直接进行排序,否则分三步处理:

分解(Divide):将输入的序列ap..ar划分成两个非空子序列ap..aq和aq+1..ar,使ap..aq中任一元素的值不大于aq+1..ar中任一元素的值。

递归求解(Conquer):通过递归调用快速排序算法分别对ap..aq和aq+1..ar进行排序。

合并(Merge):由于对分解出的两个子序列的排序是就地进行的,所以在ap..aq和aq+1..ar都排好序后不需要执行任何计算ap..ar就已排好序。

这个解决流程是符合分治法的基本步骤的。因此,快速排序法是分治法的经典应用实例之一。

 

算法Quick_Sort的实现:

 

Pascal实现:

Procedure Quick_Sort(p,r:TPosition;var L:TList); {快速排序}

 

var

 

q:TPosition;

 

begin

 

if L[p..r]足够小 then Sort(p,r,L) {若L[p..r]足够小则直接对L[p..r]排序}

 

else

 

begin

 

q:=Partition(p,r,L); {将L[p..r]分解为L[p..q]和L[q+1..r]两部分}

 

Quick_Sort(p,q,L); {递归排序L[p..q]}

 

Quick_Sort(q+1,r,L); {递归排序L[q+1..r]}

 

end;

 

end;

 

 

3、答案

 

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

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

而虚函数是专门为这个特性设计的,这个函数在每个基类的派生类中都是同一个名字,但函数体却并不一定相同,派生类往往为实现自己的功能而修改这个虚函数.这样用一个指针就能够实现对多种不同的派生类的访问, 并实现其派生类的特定功能(代码 )....

 

4、答案

用VIEWSTATE

stateserver

 

5、答案

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

 

6、答案

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

 

数据复制的概念及特点

 

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)确定清除时间

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

CONNECT repadmin/repadmin@cl.world

BEGIN

 DBMS_DEFER_SYS.SCHEDULE_PURGE (

next_date => SYSDATE,

interval => ’SYSDATE + 1/24’,

delay_seconds => 0);

END;

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

 

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

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

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

CONNECT SYSTEM/MANAGER@cl.world

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

CONNECT repadmin/repadmin@cl.world

CREATE DATABASE LINK js.world CONNECT TO repadmin

IDENTIFIED BY repadmin;

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

CONNECT SYSTEM/MANAGER@js.world

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

CONNECT repadmin/repadmin@js.world

CREATE DATABASE LINK cl.world CONNECT TO repadmin

IDENTIFIED BY repadmin;

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

CONNECT repadmin/repadmin@cl.world

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)创建主控组对象

 

CONNECT repadmin/repadmin@cl.world

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

结束语

本文详细介绍了分布式系统Oracle中的数据复制技术,在具体应用中,还有许多比较复杂的问题需要解决,比如主控组中如果包含循环依赖的表或自相关的表时如何处理;如何利用模版机制来创建物化视图站点;如何对数据复制环境进行管理与维护。这些问题需要在实际

应用中逐步探索,深入研究。

 

7、答案

select a.* from b.b a

8、答案

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

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

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

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

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

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

9、答案

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、答案

发表于 @ 2006年09月26日 13:18:00|评论(4)|编辑

新一篇: 漫谈ASP.NET设计中的性能优化问题 | 旧一篇: C#读写XML的困惑评论
#blackhorsefeifei 发表于2007-03-28 16:25:41  IP: 58.213.230.*
关于一个问题的疑问?
问题1:a=10,b=15,在不用第三方变量的前提下,把a,b的值互换

如上,给出的标准答案是:

a=a+b;
b=a-b;
b=(a+b)/2;
a=a-b;

可是我认为上述第二行的代码"b=a-b"应该改为b=a-2*b"因为a的值已经改变了。在c++中应该是这样的吧?

2008-01-11 00:03:12作者回复
前提:a=10,b=15<br />a=a+b;//a=25,b=15<br />b=a-b;//a=25,b=10<br />b=(a+b)/2;//a=25,b=17<br />a=a-b;//a=25,b=8<br />可见答案是错的,其实去掉b=(a+b)/2;这句就OK了。<br />#zhoufoxcn 发表于2007-03-30 11:41:55  IP: 61.134.232.*
int a=10,b=15;
正确答案是:
a=a+b;//a=25,b=15;
b=a-b;//a=25,b=10;
a=a-b;//a=15,b=10#zhoufoxcn 发表于2007-03-30 11:43:00  IP: 61.134.232.*
这里没有涉及到变量或者引用之类的,都是值,在大部分程序语言里都差不多吧。#bangedao 发表于2008-01-01 20:02:10  IP: 220.170.36.*
对于int a=10,b=15;
正确答案是:
int c
c=a
b=c
a=b

这篇关于大型软件公司DOTNET面试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/213892

相关文章

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

一些其他面试题

阿里二面:那你来说说定时任务?单机、分布式、调度框架下的定时任务实现是怎么完成的?懵了。。_哔哩哔哩_bilibili 1.定时算法 累加,第二层每一个格子是第一层的总时间400 ms= 20 * 20ms 2.MQ消息丢失 阿里二面:高并发场景下引进消息队列有什么问题?如何保证消息只被消费一次?真是捏了一把汗。。_哔哩哔哩_bilibili 发送消息失败

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

创业者该如何设计公司的股权架构

本文来自七八点联合IT橘子和车库咖啡的一系列关于设计公司股权结构的讲座。 主讲人何德文: 在公司发展的不同阶段,创业者都会面临公司股权架构设计问题: 1.合伙人合伙创业第一天,就会面临股权架构设计问题(合伙人股权设计); 2.公司早期要引入天使资金,会面临股权架构设计问题(天使融资); 3.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

【附答案】C/C++ 最常见50道面试题

文章目录 面试题 1:深入探讨变量的声明与定义的区别面试题 2:编写比较“零值”的`if`语句面试题 3:深入理解`sizeof`与`strlen`的差异面试题 4:解析C与C++中`static`关键字的不同用途面试题 5:比较C语言的`malloc`与C++的`new`面试题 6:实现一个“标准”的`MIN`宏面试题 7:指针是否可以是`volatile`面试题 8:探讨`a`和`&a`

Laravel 面试题

PHP模块 PHP7 和 PHP5 的区别,具体多了哪些新特性? 性能提升了两倍 结合比较运算符 (<=>) 标量类型声明 返回类型声明 try…catch 增加多条件判断,更多 Error 错误可以进行异常处理 匿名类,现在支持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义 …… 了解更多查看文章底部链接 PHP7 新特性 为什么 PHP

【吊打面试官系列-Redis面试题】说说 Redis 哈希槽的概念?

大家好,我是锋哥。今天分享关于 【说说 Redis 哈希槽的概念?】面试题,希望对大家有帮助; 说说 Redis 哈希槽的概念? Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。

【Kubernetes】常见面试题汇总(一)

目录 1.简述 etcd 及其特点? 2.简述 etcd 适应的场景? 3.简述什么是Kubernetes? 4.简述 Kubernetes和 Docker的关系? 1.简述 etcd 及其特点? (1)etcd 是Core0s 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(keyvalue)数据