Java笔试题(二)

一.非技术题

1.有7个球。大小相同。仅有一个重量不同。给你一个平称,最快速度找到重量不一样的那一颗;

(1)先拿出其中6个球,平均分放到天平两端。
(2)如果天平平衡,则剩下不同。
(3)如果天平不平衡,则选重的那边任意两个球做比较。
(4)如果一样重,则剩下的那个求就是不一样的,如果天平不平衡,从之前那三颗选出一颗与其中一颗比较,一样则是另一颗,不一样则是比较的这颗。

二、技术题

1.下列关于构造函数的描述正确的是(C);

A、构造函数可以声明返回类型;
B、构造函数不可以有private修饰;
C、构造函数通常与类名相同;
D、构造函数不能带参数;

2.下列关于C#索引器理解正确的是( C);

A、索引器的参数必须是2个或2个以上;
B、索引器的参数必须是整数型;
C、索引器没有名字;
D、以上皆非;
索引至少声明1个参数,A错;索引参数类型不必是整型, B错;索引确实没有名字,名字位置上都是关键字this,C对。

3.委托可以把( C)递给( C);

A、对象和对象;
B、对象和方法;
C、方法和方法;

4.以下哪个是排序的数据列表:(A );

A、SortedList B、HashTable
C、ArryList D、Heap

5.关于线程和进程的说法( C);

A、操作系统中的每一个应用程序必须由一个进程,但不必有线程;
B、一个进程可以有自己的堆栈,但是线程只能和进程共享堆栈;
C、线程必隶属于一个进程;
D、线程可以改变它属于哪个进程;

二、简答题

1.C#的类和接口有什么异同?

是继承与被继承的关系,类可以继承接口,实现接口所有的方法。接口只是定义方法的返回值什么的,而继承类则负责实现接口的方法,就这么个关系;
抽象类:
抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。
接口:
接口是引用类型的,类似于类,更和抽象类有所相似,以至于很多人对抽象类和接口的区别比较模糊。和抽象类的相似之处有三点:
1、不能实例化;
2、包含未实现的方法声明;
3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);
另外,接口有如下特性:
接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。
一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。 其实java的接口和抽象类跟C#是差不多的, 他们的特性是相同!别的就是语法的不同了!

2.C#访问修饰符有哪些,分别有什么作用?

public 公共的,可任意访问
private 私有的,可被本类访问
protected保护,可被本类和子类访问
internal 内部,可被本程序集内的所有类访问
protected internal内部保护,只能被本程序集内的所有类和这些类的继承子类所存取

3.C#中类可以实现多继承吗?通过什么方式实现?

C#中类不支持多继承,但是允许类和接口之间实现多继承
所以第一个方法,一个一个派生
第二个方法,利用接口,实现多继承

4.什么是反射?

JAVA中的反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变。通俗的讲就是反射可以在运行时根据指定的类名获得类的信息。

5.一数列的规则如下:0、1、1、1、2、3、4、6、9....求第30位数是多少,用递归算法实现;

0,1,2,3,4,9,6,27,这些数字有什么规律
分成2组观察
0,2,4,6,8,10......
依次的双数
1,3,9,27,81,243.....
后一个数是前一个数的三倍

6.C#可否对内存进行直接操作?

可以的,
c#中是有指针的,虽然很少用到,虽然使用时要加上"unsafe"
只针对这个问题,c#是可以的
可是使用时要加上"unsafe",这已经是他从c++过来的一个转变了,......

7.简述MVC及其优缺点?

MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
优点:
1:耦合性低
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2:重用性高
随着技术的不断进步,需要用越来越多的方式来访问应用程序。MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。
MVC使开发和维护用户接口的技术含量降低。
3:部署快
使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
4:可维护性高
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
5:有利软件工程化管理
由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。控制器也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。
缺点:
1:没有明确的定义
完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。
2:不适合小型,中等规模的应用程序
花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
3:增加系统结构和实现的复杂性
对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
4:视图与控制器间的过于紧密的连接
视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
5:视图对模型数据的低效率访问
依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
6:一般高级的界面工具或构造器不支持模式
改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,会造成MVC使用的困难。

8.C#中委托是什么,事件是不是一种委托。

委托是一种在对象里保存方法引用的类型,同时也是一种类型安全的函数指针。

9.a=10,b=15,在不适用第三方变量的前提下,把a、b的值互换。

a=a+b;
b=a-b;
a=a-b;

10.hashMap的数据结构;

在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。

11.Redis可缓存哪几种数据类型;

String类型、List类型、Set类型(不可重复的无序集合)、ZSet(不可重复的有序集合)、Hash(键值对集合)

12.集合怎么扩容;怎么不使用新集合的情况下去重;

ArrayList 默认初始容量为10
线程不安全,查询速度快
底层数据结构是数组结构
扩容增量:原容量的 0.5倍
如 ArrayList的容量为10,一次扩容后是容量为15
同样可以通过分析源码知道:
Vector:线程安全,但速度慢
底层数据结构是数组结构
加载因子为1:即当 元素个数 超过 容量长度 时,进行扩容
扩容增量:原容量的 1倍
如 Vector的容量为10,一次扩容后是容量为20

Set(集) 元素无序的、不可重复。
HashSet:线程不安全,存取速度快
底层实现是一个HashMap(保存数据),实现Set接口
默认初始容量为16(为何是16,见下方对HashMap的描述)
加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容
扩容增量:原容量的 1 倍
如 HashSet的容量为16,一次扩容后是容量为32

for(int x =0;x<a.size()-1;x++){ 
  for(int y=(x+1);y<a.size();y++){
   if(a.get(x).equals(a.get(y))){ 
        a.remove(y); y--;//这里很重要 在内循环中如果删掉一个元素 下一个元素会补位到被删除的位置 但是内循环y依旧是跳到下一个位置去了,所以补位的元素就没有判断 而跳过去了!每次 删除一个元素后 要把y退回到上一个位置!
     }
   } 
}
System.out.println(a);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352