2017面试题个人汇总


1.JAVA基础:写出两种单列模式
a、饿汉式
public class EagerSigleton{
private static final EagerSigleton instance=new EagerSigleton();
private EagerSigleton(){}////私有构造方法
public EagerSigleton getInstance(){//静态工厂方法
return instance;
}
}
b、懒汉式
public class LazySigleton{
private static final LazySigleton instance=null;
private LazySigleton(){}//私有构造函数
public synchronized LazySigleton getInstance(){//静态工厂方法,注意这里的synchronized
if(instance==null){
instance=new LazySigleton();
}
return instance;
}
}
相同点:
单例模式属于创建模式,保证在同一个jvm中仅仅存在该类的一个实例。在上面两种的单例模式中,可以看出:
① 两种方式的构造函数都是私有的。
② 对外接口都是工厂方法。
不同点:
饿汉式是在类装载时直接得到该类的实例,可以说式前期绑定的。而懒汉式在类加载时并没有指向具体的某个对象。
而是当调用工厂方法后才被实例化。因此,前者速度快,后者速度慢。但后者可以加载其他的类,
(也就是动态扩展)灵活性高。

2.Java基础:==和equals的区别
a、String str1=new String("apple");
   String str2=new String("apple");
   现在有两个Boolean型表达式:
   ①str1==str2;
   ②str1.equals(str2);
b、上述例子的正确值是
   ①false
   ②true
c、结果解析:
   ==比较的是两个对象的地址
   equals比较的是两个对象的内容
   如果一个类没有自己定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,
   也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果,如果
   比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容
   是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可认为两个对象的内容是相同的.

3.Java基础:创建线程有几种不同的方式
三种方式可以用来创建线程:
继承Thread类
实现Runnable接口
应用程序可以使用Executor框架来创建线程池
实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。
同时,线程池也是非常高效的,很容易实现和使用。

4.Java算法题:输入一行字符,分别统计出英文字母,空格,数字,字符的个数
  http://blog.csdn.net/manong_xiaojiang/article/details/7820672

5.Java算法题:取一个整数a从右端开始的4~7位
  http://blog.csdn.net/iamdingruihaha/article/details/74643632

6.Android网络:Android的三个网络请求框架:volley,retrofit,okhttp,对比这三个网络框架的优势,并
  写出retrofit和okhttp的
  http://blog.csdn.net/carson_ho/article/details/52171976
  http://blog.csdn.net/qq_33342248/article/details/53906842
  http://blog.csdn.net/lmj623565791/article/details/51304204

7.Android异常:当程序发生Uncaught异常的时候,我希望实现UncaughtExceptionHandler来做一个统一的异常
  处理,异常发生时UncaughtExceptionHandler中用被转入执行的方法名是什么?并简单在此方法中实现程序
  的安全退出(请利用退出所有栈中activity来实现)

8.Android界面布局:整个界面,分三个layout,第一个layout高度150dip,其中包含一个头像图片高宽均为80dip,
  距上边缘与左边缘10dip,头像右侧两个Text View,姓名Text View与头像上侧对齐,公司Text View与头像下侧对其,另外两个
  layout,一个占剩余纵向的1/4,另一个占3/4.
  (Android studio或者eclipse打开了自己敲代码。。。)

9.Android线程交互:页面上现有Progress Bar控件,请用书写线程以10秒的时间完成其进度显示工作。
  http://blog.csdn.net/hanchendong/article/details/51420460

10.数据库:利用Android轻量级数据库框架GreenDao的简单的增删改查(包括初始化)
   注:实体类:User<Long id> <String name>
   http://www.jianshu.com/p/4986100eff90

猜你喜欢

转载自blog.csdn.net/u013110200/article/details/76473850
今日推荐