`
ch_kexin
  • 浏览: 898934 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

大型软件公司.net面试题!一定得看(附答案)

    博客分类:
  • .NET
阅读更多
引用

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);

    }



    /**

     * @param args

     */

    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);


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhoufoxcn/archive/2006/09/26/1287159.aspx
分享到:
评论

相关推荐

    大型软件公司.net面试题!一定得看(附答案

    以上是针对.NET面试题中的关键知识点的详细解释,涵盖了变量交换、排序算法、多态、会话管理、并发控制、数据库操作、数据去重以及JavaScript编程等多个方面。这些知识对于.NET开发者来说非常重要,理解和掌握它们有...

    .net 面试题系列(网上收集)很全

    2008/08/03 10:34 88,064 大型软件公司.net面试题!一定得看(附答案)收藏.doc 2008/06/17 18:37 2,121 最新.net 面试题 2.txt 2008/06/17 18:36 1,649 最新.net 面试题.txt 2008/06/17 18:45 1,067 某软件公司.net...

    大型软件公司.NET面试题

    在大型软件公司的.NET面试中,面试官通常会考察应聘者的深入理解、实践经验以及问题解决能力。以下是一些可能涉及的重要知识点: 1. **基础概念**:了解.NET Framework的基本构成,包括Common Language Runtime ...

    java 与.net面试题

    6. **.NET面试题**:.NET面试题会涵盖C#语言,如lambda表达式,LINQ,异步编程(async/await),以及.NET框架,如Windows Forms,WPF,ASP.NET MVC或Core,Entity Framework等。数据库操作,如ADO.NET,也可能是重点...

    DotNetGuide,C#面试题,.NET Core面试题,MySQL面试题,Redis面试题,大厂面试题

    本压缩包中的资源涵盖了几个核心的编程语言和技术,包括C#、.NET Core、MySQL、Redis以及大厂面试题,这些都是现代企业级应用开发中不可或缺的部分。让我们逐一深入探讨这些知识点。 1. **C#**:C#是一种面向对象的...

    软件公司常用的面试题

    【.NET面试题详解】 1) 线程与进程的区别 线程和进程是操作系统中并发执行的基本单元。进程是资源分配的最小单位,拥有独立的内存空间,互不干扰;而线程是程序执行的最小单位,共享同一进程内的资源,包括内存和...

    大型公司程序员面试题

    在大型公司的程序员面试中,考察的知识点广泛而深入,涵盖了数据结构、算法、数据库操作、编程语言特性以及软件设计等多个方面。以下是对这些面试题的详细解析: 1. **斐波那契数列**:这是一个典型的递归问题,...

    亮剑.NET深入体验与实战精要2

    此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果和盘托出,力求将编程思想与具体实践融为一体,提炼出适合于广大读者快速理解和彻底掌握.NET软件开发的最佳学习...

    一份公司的笔试和面试题

    这份公司的笔试和面试题主要涵盖了.NET框架下的C#编程、SQL数据库知识以及软件设计模式等多个IT领域的基础和进阶知识点。下面将详细解读这些题目所涉及的IT知识点: 1. **项目经验和技术栈**:面试时,面试者需要...

    亮剑.NET深入体验与实战精要3

    此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果和盘托出,力求将编程思想与具体实践融为一体,提炼出适合于广大读者快速理解和彻底掌握.NET软件开发的最佳学习...

    JAVA面试题

    ### JAVA面试题与知识点解析 #### 一、面试准备与自我介绍 - **自我介绍**: - **个人信息**:姓名、身份等基础信息。 - **教育背景**:学历、专业等。 - **工作经验**:过去的工作经历、职位及主要职责。 - *...

    微软面试题汇总大全.rar

    这份"微软面试题汇总大全"的压缩包包含了一份名为"微软面试100题系列.pdf"的文档,旨在为准备参加微软面试的求职者提供宝贵的参考资料。下面,我们将深入探讨其中可能涵盖的一些关键知识点。 1. **编程基础**:微软...

    华为面试题小结

    面试题中涉及的其他知识点 #### 协议与信息安全 - **网络通信协议**:如TCP/IP协议族,是互联网的基础,涉及到数据在网络中的传输方式和格式。 - **信息安全**:包括数据加密、身份认证、访问控制等方面,确保数据...

    Borland面试题

    根据给定的“Borland面试题”文档的内容,我们可以整理出以下相关的IT知识点: ### 1. Delphi与Borland的关系 - **Borland**是一家知名的软件开发公司,以其开发工具闻名于世。 - **Delphi**是Borland推出的一种...

    超级有影响力霸气的Java面试题大全文档

    超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...

    2012 Microsoft Intern Hiring Written Test

    【标签】"微软笔试题"提示我们,这个压缩包文件包含的可能是一系列与编程、算法、操作系统、网络、数据结构、软件工程等相关的问题,这些都是微软等大型科技公司在招聘时经常考察的知识点。考生可能需要具备扎实的...

    Myschool(在线考试系统)

    C#是微软公司推出的面向对象的编程语言,广泛应用于Windows平台的软件开发,尤其是.NET框架下的应用程序。C#具有类型安全、垃圾回收、异常处理、面向对象等特性,适合开发大型、复杂的软件系统。 在这个在线考试...

    给C#的一部超经典的笔试题

    作为一门广泛应用于软件开发、游戏制作、Web应用程序等领域的编程语言,C#在众多公司中占据着核心地位。因此,掌握C#的基础知识以及能够解答相关的笔试题目,对于求职者来说至关重要。 【描述】:“c#大部分公司的...

Global site tag (gtag.js) - Google Analytics