Saturday, July 25, 2015

Cracking the coding interview--14.1-14.6-Java



Cracking the coding interview--14.1-14.6 - Java
In terms of inheritance, what is the effect of keeping a constructor private?
译文:
在继承方面,保持一个构造函数私有的作用是什么?
解答14.1
使构造函数私有可以使类只供内部使用,只被调用一次,生成的实例是单一的,单例模式就是一个很好的例子。
In Java, does the finally block gets executed if we insert a return statement inside the try block of a try-catch-finally?
译文:
在Java中,如果我们在try语句try-catch-finally插入一个返回语句,finally块还会执行么?
解答14.2
方法执行到return语句便会返回结果但不会终止,特例就是Java的异常体系
try-catch-finally句子的规律:
1、finally语句块的代码是必定会执行的,而catch语句块的代码只有发生异常时才能执行
2、方法执行碗try中的return之后不会终止,会继续执行catch(try中抛出异常时)、finally块
3、方法必须确保返回值,且该值唯一。
4、return语句的优先级是finally最大,且try、catch两者之一的return会被执行,为保证第3条原则,返回优先级最大的值。
class ExceptionTest{  
    @SuppressWarnings("finally")  
    public String test(){  
        String returnStr ="start";  
        try {  
            System.out.println("start String:"+returnStr);  
            returnStr="try innner";  
            throw new Exception("inner Exception");  
        } catch (Exception e) {  
            returnStr ="catch inner";  
            return returnStr;  
        }finally{  
            returnStr = "finally";  
            System.out.println("inner finally:"+returnStr);  
            return returnStr;  
        }  
    }  
      
    public static void main(String[] args) {  
        ExceptionTest exceptionTest = new ExceptionTest();  
        try {  
           String test= exceptionTest.test();  
            Thread.sleep(300);  
            System.out.println("returnString:"+test);  
        } catch (InterruptedException e) {  
            // TODO: handle exception  
        }  
    }  
}  
输出结果:start String:start
          inner finally:finally   

          returnString:finally

What is the difference between final, finally, and finalize?
译文:
怎样区分final、finally和finalize?
解答14.3
   1、final这个关键字在Java中代表不可改变的,可用来修饰类,方法,变量。
    对class来说,用法如:final class A{}代表类A为终极类,不能被继承,也就没有子类之说与接口实现者之说。
    对method来说,用法如:public final void test(){} 代表此方法不能被重写
   2、finally关键字用在异常处理中,用于处理异常后的清理工作,实际中一般用于关闭文件流,释放资源等操作。
  3、finalize方法,为Object基类自带方法,在实际中还没用上,在垃圾回收之前由这个方法进行清理工作,重写Object的这个方法自定义整理工作。
Explain the difference between templates in C++ and generics in Java.
译文:
解释C++与Java的泛型模板的区别。
解答14.4
C++与Java的泛型模板有以下几点区别:
1.C++的类和函数能够模板化;Java的类和方法能泛型。(两者差不多的)
2.C++模板参数可以是任何类型;Java只能是引用类型,不能是基本类型。不过有自动装箱和拆箱,使用Byte等也很方便。
3.C++中,对于各个参数,类和函数是分别编译的;Java中,都编译为一个版本,对于所有类型都能工作。
4.C++运行时,不同类型参数的类的对象是不同的类型;Java有所谓的擦除,运行时不同类型参数的类的对象是同一类型。
5.C++中实现源代码必须include才能使用;Java不同机制。
6.C++不同类型参数的类中static量不是共享的;Java是共享的。

题目14.5
原文:
Explain what object reflection is in Java and why it is useful.
译文:
解释Java中对象反射机制是什么,为什么它有用?
解答14.5
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
一个例子让你了解Java反射机制 http://blog.csdn.net/ljphhj/article/details/12858767

题目14.6
原文:
Suppose you are using a map in your program, how would you count the number of times the program calls the put() and get() functions?
译文:
假如你正在程序中使用map类,你怎么样计算程序中调用put()和get()函数的次数?
解答14.6
一个简单的解决方法是当调用get()和put()方法的同时,进行计数。我们也可以做到这一点通过扩展现有的map库和重写get()和put()方法。
乍一看,这似乎工作。然而,如果我们的多个实例map呢?如何计算每个地图对象的总数吗?
这是最简单的解决方案定义静态计算变量。静态变量只被创建一次,多个map调用的get(),put()方法总数将都会累加在这个静态变量中。
Cracking the coding interview--14.1-14.6 - Java

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts