


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java根底问题问题1:Question 49:public class Ques49 public static void main(String args) Employee employee = new Employee( 4321); System. out .println(employee.empID);classPers onStringname = No name;/*public Person()this(fern);System.out.pri ntln (Pers on 1);*/publicPerson( Stri ng nm)n ame = nm;Pers on2 =
2、 + nm);System. out .println(class Employeeexte nds PersonStri ng empID = 0000public Employee(String id)/super(id);empID = id;需要在子类的构造函数中加问题:为什么需要在父类中定义一个默认的构造函数或者super问题2:Questio n101 :public classQueslOI extendsFruit1int size = 42;public static void main(String args) Ques101 b = new Ques101();/对象序列
3、化ObjectOutputStream oos = null;try oos = new ObjectOutputStream( new FileOutputStream( D:food.txt); oos.writeObject(b); catch (Excepti on e) e.pri ntStackTrace(); finally /反序列化Object In putStream ois = null;try ois = new Object In putStream( new FileI nputStream( D:food.txt);b = (Ques101) ois.readOb
4、ject();System. out.println( restored +b.size+); catch (Excepti on e) e.pri ntStackTrace(); finally class Food1Food1()System. out.println(1);class Fruit1 extends Food1 implements Serializableprivate static final long serialVersionUID = 1L;public Fruit1()System. out.println( 2);输出: 121restored42问题:反序列
5、化机制无需通过构造器来初始化对象,如何理解?问题 3:Question29: public class Ques29 static void main(String args) x =1,2,3,4,5,6; y =x;输出结果相同, “Ide6ced Ide6ced ,内存地址相同,说明 xpublicintint/*和y指向同一个对堆内存空间*/System. out .println(x);System. out .println(y);System. out .println(x2);System. out .println(y2); 输出结果:Ide6cedIde6ced33问题:数
6、组 x 和数组 y 的栈内存和堆内存的情况?问题4:Questio n102:public classQues102 implements Serializableprivate int x;public int getX()return x;public Ques102(int x)this.x = x;private void writeObject(ObjectOutputStream s,Object b) throws lOExceptions.defaultWriteObject(); s.writeObject(b);public static void main(String
7、args) Ques102 b = new Ques102(100);/对象序列化ObjectOutputStream oos = null;try oos = new ObjectOutputStream( new FileOutputStream( D:food.txt); /oos.writeObject(b);oos.defaultWriteObject(); 使用默认的 写对象/b.writeObject(oos);b.writeObject(oos,b); catch (Excepti on e) e.pri ntStackTrace(); finally /反序列化Object
8、In putStream ois = null;try ois = new Object In putStream( new FileI nputStream( D:food.txt);b = (Ques102) ois.readObject();System.out.println( restored +b.x+); catch (Exception e) e.printStackTrace(); finally 问题: defaultWriteObject ()的使用问题 5:Question119:public classQues119 extendsThreadprivate int
9、x=2;public static void main(String args) throws Exception new Ques119().makeItSo();new Ques119().go();public Ques119()x=5;System. out.println(Thread. currentThread ().getName(); start();public void makeItSo() throws Exceptionjoin();x=x-1;System.out.println( makeItSo +x);public void run()System. out.
10、println(Thread. currentThread ().getName(); x*=2;System.out.println( run +x);public void go()System. out.println( gogogo + x);输出: main Thread-0 run 10 makeItSo 9 main gogogo 5 Thread-1 run 10问题: join()问题 6:Question123: public classQues123 private static Object resource = new Object();private static
11、void delay( long n)try Thread. sleep(n); catch (Exception e) System. out.println( error ); e.printStackTrace();public static void main(String args) System. out.println( StartMain );new Thread1().start();delay(1000);Thread2 thread2 = new Thread2(); thread2.start();delay(1000);thread2.i nterrupt();del
12、ay(IOOO);System.out.println( EndMain);static classThread1 extends Thread public void run()synchronized (resource* System.out.pri ntl n(Start1); delay(6000);System.out.println(End1); static classThread2 extends Thread public void run() synchronized (resource* System.out.pri ntl n(Start2); delay(2000)
13、;System.out.println(End2); 输出结果:StartMain Startl En dMai n En didStart2: sleep in terrupteerrorEn d2at java.la ng.Thread.sleep(Native_Method)at Ques123.delay(,Ques123.java:11)at Ques123.access$1( .Ques123.java:9 )at Ques123$Thread2.ru n( Ques123.java:50)问题:interrupt();后为何报错问题 6:Question 125:public c
14、lassQues125 int x = 0;public class Runner implements RunnableOverridepublic void run() int current = 0;for (int i=0;i4;i+) current = x;System.out.println(current+ ,+Thread. currentThread().getName(); x = current + 2;public static void main(String args) new Ques125().go();public void go()Runnable run
15、nable = new Runner(); new Thread(runnable).start(); new Thread(runnable).start();选题答案: 0, 2, 4 ,4 ,6 , 8 ,10 ,6 和 0,2,4,6,8, 10,12,14自己试验的结果如下: 输出结果 1: 0,Thread-0 0,Thread-1 2,Thread-0 2,Thread-1 4,Thread-04,Thread-16,Thread-16,Thread-0输出结果2:0,Thread-02,Thread-02,Thread-14,Thread-04,Thread-16,Thread
16、-06,Thread-18,Thread-1输岀结果3:0,Thread-02,Thread-04,Thread-06,Thread-08,Thread-110,Thread-112,Thread-114,Thread-1问题7:Questio n126:public classQues126 private List n ames = new ArrayList();public synchronized void add(String name)n amesadd(n ame);public synchronized void printAII()for (int i=0;i n ames
17、.size();i+)System.out.println( names.get(i)+ );public static void main(String args) final Ques126 sl = new Ques126();for (int i=0;i2;i+)new Thread()public void run()sl.add(A +Thread. currentThread ().getName();sl.add(B +Thread. currentThread ().getName();sl.add(C +Thread. currentThread ().getName();
18、 sl.printAll();.start();答案结果:A B C A B C A B CA B C A A B C A B C试验输出结果:结果 1:A Thread-0B Thread-0C Thread-0A Thread-0B Thread-0C Thread-0A Thread-1B Thread-1C Thread-1结果 2:A Thread-0A Thread-1B Thread-0B Thread-1C Thread-0C Thread-1A Thread-0A Thread-1B Thread-0B Thread-1C Thread-0C Thread-1设计模式篇问题
19、1:傅各种设计模式在实际开发中 的应用? 我们在将来的实际工程开发中,将如何正确使用设计模式?设计模式是一套被反复使用验证 , 对代码设计经验的总结。使用设计模式是为了可重用代 码、提高代码可维护性 , 可理解性、保证代码可靠性。一方面 , 设计模式是对代码设计经验的总结 , 另一方面 , 设计模式也被经常的使用到各高效 成熟 , 稳定的系统架构中也就是说在现有成熟系统中运行着无数这样的高质量的代码 , 比方 Java 本身, Android 的设 计, 无处不存在对设计模式的运用撰写高质量的代码是每个开发人员应当追求的目标设计模式学习和使 , 我总结的经验是 1. 多写代码 , 2. 多看代
20、码 , 3. 设计模式的案列结合实 际系统来看 , 比方学习一个设计模式 , 可以去找找 java 中, android 哪里用到了 , 是怎么用的另外一点 , 设计模式并不是生搬硬套的 , 有时会出现各种变种 , 或者交叉使用问题 2:黄工厂模式中,子类实例化的好处?与父类实例化的区别?工厂方法定义一个创立产品的接口 , 由子类 工厂 来实现这个接口 , 在这个接口方法里来实 例化具体产品 相比简单工厂 , 是更高一层的抽象 , 简单工厂在一个类里面来实例化多种产品 , 对于要扩展 一个新产品就会需要修改代码 , 而工厂方法就能在不修改原有代码的情况下 , 新增一个工厂 类来产生新产品 ,
21、从这点来说工厂方法更易于扩展问题 3:黄接口和抽象类的区别? 为什么接口让代码更具有弹性?具体表达在哪里?这个很根本的东西了 , 很多面试题都会提到这个吧 , 建议多看看书和相关资料先 , 如果这个 没明白 , 后面讲再多也白搭问题 4:黄命令模式与模块方法模式的区别?理论的东西不讲了 , 我举个列子Java 的线程实现了 Runnable 接口 , 这就是个典型的命令模式Activity 生命周期 , 就是一个典型的模块方法问题 5:顾抽象工厂模式 ?看书去问题 6:傅模板方法模式, P295 页中,如何理解将这些步骤实现成钩子,而不是实现成抽象方法,这 样就可以让抽象类的子类的负荷减轻?
22、书本中提到的例子哪些地方表达上句话的内容?以 Activity 生命周期为例 , 为什么有些步骤在父类实现 , 为什么有的才让子类来实现 : Activity 负责全局的生命周期 , 很多钩子方法在父类中已有默认实现 , 但子类可以改写他来 做更深的定制抽象方法在父类不实现 , 全由子类来实现子类在不改写钩子的情况下默认调用父类的实现 , 当然减轻了负荷 , 至少代码变少了啊P300 页开始的“用模板方法排序中,如何理解“排序也是一种模板方法?不是 “排序也是一种模板方法 是可以用模板方法模式来实现排序算法比方 , java 中 list 类的 sort 方法就是用的模板方法模式 某种程度上也
23、可认为是策略模式 他只提供了一个 sort 方法 , 这个方法实现了一个归并排序算法的模板 , 但排序最根本 , 大家 知道对于数字就是比大小 , 字母就是比先后 , 但其他对象呢 , 怎么得到这个准那么 , 所以 sort 方法对外暴露了一个实现了 compare 方法的 Comparator 接口对象compare 方法就是用来得知 , 俩对象 , 俩俩比拟的时候 , 谁排第一谁排第二问题7 :傅模板方法和策略的比拟,及其在实际场合的应用。前面讲到了,Activity生命周期就是典型的模板方法模式模板方法和策略有相通的地方,都是子类来实现父类需要实现的方法但策略侧重于多个子类来实现同样的接
24、口或者抽象方法,在编译时或运行时通过判断配置或某种策略来加载/实例化具体子类,并且这些子类是可以置换的策略模式,an droid中状态栏运用了此模式,分别实现了 pho ne和pad的相关类,并通过配置 来决定使用那种模式问题8:傅网上看到的话:“设计模式就是定式,碰到这种场合你才用得上,所以学习设计模式,你只需要花2个小时过一遍,脑子里面有个印象就赶快收手,到用的时候再去copy & paste 。对于我们这些没有什么工程经验的初学者来说,设计模式的学习是一个怎样的过程?如果把?Head First设计模式?中所有的例子都消化了,但是在实际应用中却还是不知道该用什么设 计模式怎么办?公司开发
25、的工程中有没有一些固定的模块使用了相关的设计模式,我们在以后的实际开发中可以套用这些模块?见问题1/问题9 :傅p136页,工厂模式中。工厂模式的好处:将创立对象的代码集中在一个对象或方法中,可以防止代码中的重复, 并且方便以后的维护。这意味着客户实例化对象时,只会依赖于接口, 而不是具体类。我在学习中可以发现,这可以帮助我针对接口编程,而不是针对实现编程。这让代码更具有弹性, 可以应对未来的扩展。书本中的例子:public class NYPizzaStore extends PizzaStore Pizza createPizza(5tring item)( if (itemequaIs(
26、cheese)( return new NYStyleCheesePizza(), else if (item.equals(veggie) return new NYStyleVeggiePizza()j else if (item.equals(clamT,) return new NYStyleClamPizza(); else if (item. equals (11 pepperoni) ) return new NYStylePepperoniPizza()j ele return null;以上将创立对象的代码集中在一个方法中。这方法之前你要产生 NYStylePepperonP
27、izza是不是得依赖具体类 NYStylePepperonPizza.class 使用之后,你只要调用NYPizzaStore.CreatePizza pepperoni,就不用依赖具体类了从下面的代码中如何理解“这意味着客户实例化对象时,只会依赖于接口,而不是具体类 ?public elm耳* PizzaTestDrive public static void main(String args) PizzaStore nyStore = new NYPizzaStore();PizzaStore chicagoStore = neiAr Chica君);Pizza pizza = nyS七o
28、re-orMerPizzm(chEEse);Sy stem, oat. pr i ntln(TEthan ordered ; pizza getName Q +pizza - chicagoStore.orderPiz;a(cheese)jSystem .out. print Inf1 Joel ordered a + pizza*getName() + Xn);依赖于orderPizza接口方法而不是具体去new某个具体类p156页中,“抽象工厂允许客户使用抽象的接口来创立一组相关的产品,而不需要知道或 关心实际产出的具体产品是什么。如何在代码中表达?看书看代码去这么说吧简单工厂就是抽象产品
29、,一个工厂生产多个产品,告诉工厂需要什么就能得到什么 工厂方法就是从工厂层次进行抽象,一个工厂对应一个产品,告知我要什么工厂就能得到什 么产品抽象工厂同时抽象产品和工厂 ,n个工厂,每个工厂产生多种产品,告诉每一次都是站在更高的层次来进行抽象以获得更高层次的扩展或更多的对象,更好的弹性开场白许多学生认为数学是枯燥的、乏味的。一些非数学老师在听完一堂数学课后, 往往这样评价:思路清晰、语言精练、解题严谨,就是太乏味、缺少趣味性,让 人昏昏欲睡。那么,如何调动学生的上课积极性,引发他们的好奇心?设计好 开 场白非常关键。下面是数学课的几个片断:动手实验式 开场白桌上摆满了切成各种形状的萝卜,大伙好似还在热列 地讨论着什么。老师微笑问: 同学们,用一个平面去截一个正方体,截出的面可 能是什么形状?
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省思茅市2025年上半年事业单位公开遴选试题含答案分析
- 河北省南宫市2025年上半年公开招聘村务工作者试题含答案分析
- 2025版石材荒料国际贸易代理及结算服务合同
- 2025年办公室装修室内装修污染治理合同
- 2025年度双方自愿离婚协议书编制与法律支持
- 2025版挖掘机租赁与施工安全监督合同
- 2025房产投资与招投标代理合作协议范本
- 2025版三方合作的城市绿地景观施工及维护合同
- 2025版房地产中介代理注册服务合同
- 河北省沧县2025年上半年公开招聘村务工作者试题含答案分析
- (2025秋新版)苏教版三年级数学上册全册教案
- 保密教育培训课件内容
- 陕西省专业技术人员继续教育2025公需课《党的二十届三中全会精神解读与高质量发展》20学时题库及答案
- 2024-2025学年人教版数学五年级下学期期末试卷(含答案)
- 河道清淤施工方案(定稿)
- 石料场开采方案
- 2019三福百货品牌介绍51P
- 《安徒生童话》读书分享名著导读ppt
- 第1章制图基础-金大鹰
- 清欠工作管理制度管理办法
- 护理质量管理会议记录范文
评论
0/150
提交评论