Java开发面试题 java软件开发面试题

java\u5f00\u53d1\u9762\u8bd5\u9898

\u7ed3\u679c\u5982\u4e0b\uff0c\u5199\u7684\u6709\u4e9b\u590d\u6742\u4e86
private static List mergeTrays(List list) { Map> trayMap = new HashMap(); List newTray = new ArrayList(); for (Tray tray : list) { int id = tray.id; List goods = tray.goods; if (trayMap.containsKey(id)) { // \u5c06\u76f8\u540c\u6258\u76d8id\u7684\u5546\u54c1\u653e\u5728\u4e00\u8d77 List tempGoods = trayMap.get(id); for (int i = 0; i > entry : trayMap.entrySet()) { int id = entry.getKey(); List goods = entry.getValue(); Map goodsMap = new HashMap(); for (int i = 0; i newGoods = new ArrayList(); for (Map.Entry goodEntry : goodsMap.entrySet()) { Goods good = new Goods(); good.id = goodEntry.getKey(); good.count = goodEntry.getValue(); newGoods.add(good); } Tray tray = new Tray(); tray.id = id; tray.goods = newGoods; newTray.add(tray); } return newTray; }

List list2 = new ArrayList();for (Tray tray : list) {// \u5408\u5e76\u81ea\u8eab\u5546\u54c1 id \u76f8\u540c\u7684\u6258\u76d8\u4e0a\u7684\u5546\u54c1List gList0 = new ArrayList();for (Goods good : tray.goods) {boolean flag = false;for (Goods g0 : gList0) {if (g0.id == good.id) {g0.count += good.count;flag = true;}}if (!flag) {gList0.add(good);}}tray.goods = gList0;// \u5408\u5e76\u6258\u76d8id \u76f8\u540c \u7684\u7684\u5546\u54c1Tray t0 = null;for (Tray tray2 : list2) {if (tray2.id == tray.id) {t0 = tray2;break;}}if (t0 == null) {list2.add(tray);} else {for (Goods good : tray.goods) {boolean flag = false;for (Goods g0 : t0.goods) {if (g0.id == good.id) {g0.count += good.count;flag = true;}}if (!flag) {t0.goods.add(good);}flag = false;}}t0 = null;}list = list2;

1、面向对象的特征有哪些方面?
答:面向对象的特征主要有以下几个方面:
- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
- 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。
- 封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。
- 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1). 方法重写(子类继承父类并重写父类中已有的或抽象的方法);2). 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。
2、访问修饰符public,private,protected,以及不写(默认)时的区别?
答:

修饰符
当前类
同 包
子 类
其他包

public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×
类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。Java中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的修饰符可以是以上四种。
3、String 是最基本的数据类型吗?
答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。
4、float f=3.4;是否正确?
答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。
5、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
答:对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。
6、Java有没有goto?
答:goto 是Java中的保留字,在目前版本的Java中没有使用。(根据James Gosling(Java之父)编写的《The Java Programming Language》一书的附录中给出了一个Java关键字列表,其中有goto和const,但是这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)
7、int和Integer有什么区别?
答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。

  • Java寮鍙宸ョ▼甯闈㈣瘯甯歌闂殑闂鏈夊摢浜?
    绛旓細1.璇疯В閲Java骞冲彴鐨勭嫭绔嬫т互鍙奐ava鐨勨滅紪鍐欎竴娆★紝杩愯鍦ㄤ换浣曞湴鏂光濈殑鐞嗗康銆2.璇风畝瑕佷粙缁岼ava鐨勫熀鏈暟鎹被鍨嬪強鍏跺ぇ灏忋3.浠涔堟槸Java鐨勫瀮鍦惧洖鏀舵満鍒讹紵璇风畝瑕佹弿杩板叾宸ヤ綔鍘熺悊銆4.璇疯В閲奐ava涓殑鍥涚璁块棶鏉冮檺淇グ绗︼細public,protected,default锛堟棤淇グ绗︼級鍜宲rivate銆5.璇疯В閲奐ava涓殑缁ф壙鍜屾帴鍙e疄鐜般傚畠浠箣闂存湁...
  • 闈㈡福閫嗚:Java鍩虹闈㈣瘯棰,46閬揓ava鍩虹鍏偂鏂(4.8涓囧瓧,30+鎵嬬粯鍥...
    绛旓細Java璇█浠ョ畝鍗曟т负璁捐鍒濊》锛屽叾鐗规у寘鎷潰鍚戝璞★紙OOP锛夈佸钩鍙版棤鍏虫э紙JVM锛夈佸畨鍏ㄦэ紙閫氳繃娌欑鏈哄埗锛夈佸仴澹у拰澶氱嚎绋嬫敮鎸併侸VM璐熻矗杩愯Java瀛楄妭鐮侊紝JDK鍖呭惈JRE鍜寮鍙宸ュ叿锛岃孞RE鍒欏寘鍚簡鎵ц鐜鍜屾牳蹇冨簱銆傝繖绉嶈璁′娇寰桱ava杞欢鑳藉鍦ㄤ笉鍚岀殑鎿嶄綔绯荤粺涓婃棤缂濊繍琛岋紝闄嶄綆浜嗗紑鍙戞垚鏈拰鎻愰珮搴旂敤绋嬪簭鐨勫彲鐢ㄦс侸a...
  • Java甯歌鐨闈㈣瘯闂(甯︾瓟妗),鑷繁绛斿嚭鏉ュ灏
    绛旓細1銆佸湪java涓鏋滃0鏄庝竴涓被涓篺inal锛岃〃绀轰粈涔堟剰鎬?绛旓細final鏄渶缁堢殑鎰忔濓紝final鍙敤浜庡畾涔夊彉閲忋佹柟娉曞拰绫讳絾鍚箟涓嶅悓锛屽0鏄庝负final鐨勭被涓嶈兘琚户鎵裤傜埗绫荤殑鏋勯犳柟娉曟槸鍚﹀彲浠ヨ瀛愮被瑕嗙洊(閲嶅啓)?绛旓細鐖剁被鐨勬瀯閫犳柟娉曚笉鍙互琚瓙绫昏鐩栵紝鍥犱负鐖剁被鍜屽瓙绫荤殑绫诲悕鏄笉鍙兘涓鏍风殑銆2銆佽璁茶堪String 鍜孲tringBuffer...
  • java鍩虹闈㈣瘯棰鏈夊摢浜?
    绛旓細Java 杩愯鏃剁幆澧(JRE)鏄皢瑕佹墽琛 Java 绋嬪簭鐨 Java 铏氭嫙鏈恒傚畠鍚屾椂涔熷寘鍚簡鎵ц applet 闇瑕佺殑娴忚鍣ㄦ彃浠躲Java 寮鍙宸ュ叿鍖 (JDK)鏄畬鏁寸殑 Java 杞欢寮鍙戝寘锛屽寘鍚簡 JRE锛岀紪璇戝櫒鍜屽叾浠栫殑宸ュ叿(姣斿锛欽avaDoc锛孞ava 璋冭瘯鍣)锛屽彲浠ヨ寮鍙戣呭紑鍙戙佺紪璇戙佹墽琛 Java 搴旂敤绋嬪簭銆4.鏄惁鍙互鍦 static 鐜涓...
  • 100+缁忓吀Java闈㈣瘯棰鍙婄瓟妗堣В鏋
    绛旓細Java闈㈣瘯绮惧崕闂涓庢繁搴﹁В鏋怞ava缂栫▼涓栫晫涓殑OOP榄旀硶 Java浣滀负涓闂ㄥ己澶х殑缂栫▼璇█锛屾敮鎸佸苟鍙戠紪绋嬶紝浠ュ強灏佽銆佸鎬佸拰缁ф壙绛夐潰鍚戝璞$壒鎬с傝繖浜涚壒鎬х‘淇濅簡妯″潡鍖栥佷唬鐮佸鐢ㄥ拰楂樺害鍙潬鎬с傚皝瑁呮槸Java鐨勭瀵嗘鍣紝闅愯棌鍐呴儴缁嗚妭锛屽彧閫氳繃鐗瑰畾鏂规硶鏆撮湶缁欏閮ㄤ笘鐣屻傚鎬佸垯鍏佽缁熶竴鎺ュ彛澶勭悊澶氱琛屼负锛岀户鎵垮垯閫氳繃澶嶇敤鍜屾墿灞...
  • Java闈㈣瘯涓兘浼氶亣鍒板摢浜涢棶棰
    绛旓細JAVA闈㈣瘯绮鹃夐 鍚勪綅鍑嗙▼搴忕尶浠,鑳戒笉鑳芥壘鍒颁竴浠藉ソ宸ヤ綔,灏辩湅浣犵煡涓嶇煡閬撹繖,66閬撴渶鍩烘湰鐨JAVA闈㈣瘯棰,璇疯愬績鐪嬪畬,璇翠笉瀹氳繖10鍒嗛挓,浼氬奖鍝嶄綘涓杈堝瓙 闈㈣瘯棰楴O.01-NO.05 闂:濡傛灉main鏂规硶琚0鏄庝负private浼氭庢牱? 绛旀:鑳芥甯哥紪璇,浣嗚繍琛岀殑鏃跺欎細鎻愮ず鈥漨ain鏂规硶涓嶆槸public鐨勨濄 闂:Java閲岀殑浼犲紩鐢ㄥ拰浼犲肩殑鍖哄埆鏄...
  • Java闈㈣瘯棰,甯歌闈㈣瘯棰樺強绛旀姹囨
    绛旓細Java鏈鏂闈㈣瘯棰闄勮禒绛旀 Q1: Java鍐呴儴绫诲拰瀛愮被涔嬮棿鏈変粈涔堝尯鍒?绛旀:鍐呴儴绫绘槸鎸囧湪涓涓閮ㄧ被鐨勫唴閮ㄥ啀瀹氫箟涓涓被锛屽唴閮ㄧ被瀵瑰閮ㄧ被鏈夎闂潈闄愶紝鍙互璁块棶绫讳腑瀹氫箟鐨勬墍鏈夊彉閲忓拰鏂规硶銆傚瓙绫绘槸浠庣埗绫(superclass)涓户鎵跨殑绫伙紝瀛愮被鍙互璁块棶鐖剁被鎵鏈塸ublic鍜宲rotected鐨勫瓧娈靛拰鏂规硶銆俀2: 闈欐佹柟娉曞拰闈欐佸彉閲忕殑鐩殑鏄...
  • 鏀粯瀹java闈㈣瘯棰
    绛旓細闈㈣瘯棰涓锛欽ava鐨勫瀮鍦惧洖鏀舵満鍒 Java涓殑鍨冨溇鍥炴敹鏈哄埗鏄疛ava鐨勪竴澶т紭鐐癸紝涔熸槸瀹冧笌鍏朵粬缂栫▼璇█鐨勫樊鍒箣涓銆傚湪鏀粯瀹Java寮鍙鐨勯潰璇曚腑锛孞ava鐨勫瀮鍦惧洖鏀舵満鍒跺線寰鏄竴閬撶粡鍏搁潰璇曢銆侸ava鐨勫瀮鍦惧洖鏀舵満鍒舵槸涓绉嶈嚜鍔ㄥ唴瀛樼鐞嗘満鍒躲傚綋Java绋嬪簭杩愯鏃讹紝Java铏氭嫙鏈轰細鑷姩鍒嗛厤鍐呭瓨锛屽悓鏃朵篃浼氬畾鏈熻Е鍙戝瀮鍦惧洖鏀舵満鍒讹紝鍥炴敹涓...
  • Java鍩虹闈㈣瘯棰閮芥湁鍝簺?
    绛旓細绛旓細asserts鏄痡dk 1.4涔嬪悗鍙戝竷鐨勬柊鍏抽敭瀛楋紝琛ㄧず鏂█锛屽嵆绋嬪簭鎵ц鍒版煇涓湴鏂硅偗瀹氭槸棰勮鐨勫硷紝涓鑸寮鍙寰堝皯浣跨敤銆傝浣跨敤assert锛屽繀椤诲姞涓 -ea鍙傛暟 9. gc鏄粈涔堬紵绛旓細gc鏄痝arbage collection锛屽瀮鍦惧洖鏀讹紝浣跨敤gc鍙互杩涜鍨冨溇绌洪棿鐨勯噴鏀 10. String s = new String("xyz")浜х敓浜嗗嚑涓璞★紵绛旓細涓涓尶鍚...
  • Java寮鍙戦潰璇曢
    绛旓細绛旓細涓嶆槸銆Java涓殑鍩烘湰鏁版嵁绫诲瀷鍙湁8涓細byte銆乻hort銆乮nt銆乴ong銆乫loat銆乨ouble銆乧har銆乥oolean锛涢櫎浜嗗熀鏈被鍨嬶紙primitive type锛夊拰鏋氫妇绫诲瀷锛坋numeration type锛夛紝鍓╀笅鐨勯兘鏄紩鐢ㄧ被鍨嬶紙reference type锛夈4銆乫loat f=3.4;鏄惁姝g‘锛熺瓟:涓嶆纭3.4鏄弻绮惧害鏁帮紝灏嗗弻绮惧害鍨嬶紙double锛夎祴鍊肩粰娴偣鍨嬶紙...
  • 扩展阅读:java基础面试题2024 ... java开发实习面试题 ... java面试必背100问 ... java面试300题及答案 ... java测试面试题 ... java基础题库100题 ... java常见面试题 ... java面试必备100例 ... java开发面试常问到的问题 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网