前言
因为个人原因想换个公司,所以最近一直忙着交接工作和准备面试,可能准备得比较充分面了几家都过了,然后进了第一家,一直想写个文章记录下面试的事情,所以每次面试完我就在笔记本上记录了面试的问题,然后断断续续写了这篇文章,文章存了很久一直没发表,一个是前面刚入职看"前任"的代码没时间,另一个觉得内容不够丰满所以一直没发表,文章的问题是我个人的面试经历,问题的答案有些并不是当时面试的回答,是我参考了相关资料重新组织语言来说明的,希望找工作的筒子能从中得到帮助,PS:因为可能涉及公司隐私所以我把公司名字给忽略了。
XXX网络科技有限公司
一些废话:笔试大概二十来分钟,面试大概一个半小时,一面是另一个项目组的Android技术大牛来面的,全程我感觉他都对我不露任何表情(可能大神的高傲…),但是入职以后发现这大牛其实人还不错的,二面是所在项目组的组长,好像是产品出身,所以二面没聊技术,就聊些有的没得,把该跟HR聊得在这面里聊了,入职以后发现其实公司氛围很好,上班不用打卡,免费零食水果(就是这么容易被满足…),五险一金按全额工资比例买,而且最主要的是人事妹子很漂亮有没有!!别的项目组的测试妹子很漂亮有没有!!我上个部门驻点开发,整个部门23个人,全他么是男的有没有!!那种感觉很影响工作心情有没有!!咳咳,好了回归主题…
笔试(摘选)
其实我对这些笔试是很鄙夷的,网上找些笔试题然后让我们做,但是我还是偷偷拍下了笔试题,毕竟没准下一家公司跟这家找的是同一套题呢(坏笑脸)…
Q、下列代码的执行结果是什么
System.out.print(100 % 3);
System.out.print(",");
System.out.println(100 % 3.0);
A::1,1.0,这送分题,java自动类型转换,不会的查资料去…
Q、在继承中,关于构造方法的说明,下列说法错误的是
A、子类无条件的继承父类的无参构造方法,
B、子类可以引用父类中的有参构造方法,使用super关键字,
C、如果子类没有构造方法,则父类无参构造方法作为自已的构造方法,
D、如果子类有无参构造方法,而父类的无参构造方法则被覆盖。
**A:**这题选D,错得很明显
Q、下列代码的执行结果是什么
int x=3;
int y=1;
if(x==y)
System.out.println("Not equal");
else
System.out.println("Equal");
**A:**输出为:Equal,吐槽:想出这道题的人我也是服了…
Q、下列代码的执行结果是什么
public class MyClass{
static int i;
public static void main(String argv[]){
System.out.println(i);
}
}
A) Error Variable i may not have been initialized
B) null
C) 0
D) 1
A: C整型全局变量初始化值为0
Q、常用的设计模式
A: 单例 工厂 建造 代理 观察者 适配器模式等等…
Q、android中使用SQLiteOpenHelper这个辅助类时,可以生成一个数据库,并可以对数据库进行管理的方法可以是?
- getWriteableDatabase()
- getReadableDatabase()
- getDatabase()
- getAbleDatabase()
A: getReadableDatabase()和 getWriteableDatabase()都可以得到一个可既可以读又可以写的数据库对象,不同的是,当磁盘空间满了之后, getReadableDatabase()得到的是一个只读的对象,而 getWriteableDatabase()则会抛出异常。
Q、 Intent传递数据时,下列的数据类型哪些可以被传递
A、Serializable B、charsequence C、Parcelable D、Bundle
A: ABCD
Q、 android 中下列属于Intent的作用的是
A、实现应用程序间的数据共享
B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失
C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带
D、处理一个应用程序整体性的工作
A: A
我本来想一道道写出来,但是发现好多都是很基础的,一个个列出来好费时间…所以我就列出来问题大概意思好了,不知道的自己去查资料…android五大布局、四大组件、activity四种启动模式、service的启动方法、android数据存储方式、性能优化、开发技巧、代码优化,数组排序,连续有序的数组有且只有两个数相同,写方法找出来,还有些智力题就不列出来了…以上就是整个笔试题了,笔试时间要求四十分钟内,其实我做下去也就二十来分钟就做完了…
面试(摘选)
自我介绍: 这个环节基本都是每个面试的开场白,回答的时候应该有下面几个重点
- 个人基本信息(姓名、年龄、老家、居住地等);
- 来自哪里(工作地点),是干什么的(Android开发工程师),担任过什么职务、做过什么样的项目;
- 自己为何来公司面试;
- 最后祝愿(希望能得到贵公司的认可等等)。
PS:真诚自然,不能给人套路的感觉(微笑脸)。
Q、上家公司的情况
这个问题就如实说就好了,比如我当时说的是我上家公司是XXX公司,在XXX,是做XXX的,主要的项目是XXX之类的,其实问这种问题最好回答了,在这种问题上尽量扯久点,这样问别的技术问题的时间可能就少了,成功的概率就又大了点(~ _~)
Q、项目经验
这个就说自己做过的项目,要点也就这几个,这个项目是什么类型的,自己负责的模块,如果可以,把项目用到的技术跟项目碰到的问题和解决方案都说出来,注意一点,千万不要把作为一颗螺丝钉的功能放大到主结构的功能,当然要是在这个项目上真的是自己独立设计框架之类的这些就没什么了。
Q、用SQL语句获取当前时间
mysql 、 access: select now();
sqlserver : select getdate();
oracle : select to_char(sysdate('yyyy-mm-dd hh24:mi:ss));
讲真关于数据库这块我是弱项,我真的怕他接着问数据库的优化或者再往下深入的问,然后我当时说完就扯别的了,扯到别的什么地方我也不记得了…
Q、Activity的生命周期跟四种启动模式
这个问题我以前在博客中分析过,其实就是回答生命周期,然后在什么场景会触发这些生命周期方法,如果想加分的话可以再说下异常情景下怎么保存数据,然后四种启动模式要说明应用场景(PS:最后附上一句,启动模式的设置要符合应用场景,不能为了设置启动模式而设置启动模式,多说了这句话逼格会高很多- -!),另外附上链接:
Activity生命周期
Activity四种启动模式
Q、在Java中对象的引用有几个级别
在Java中对象的引用有四个级别,强引用 、软引用、弱引用、虚引用。
强引用:最普遍的引用,不申明对象引用时默认就是这个引用。在Java中即使内存不足,垃圾回收器(GC)也只是抛出OutOfMemoryError异常而不会回收使用这个引用的对象。
软引用(SoftReference):只要内存足够,垃圾回收器(GC)就不会回收这个对象,如果内存不足,垃圾回收器(GC)就会回收使用了这个引用对象的内存,
使用方法:
Object obj = new Object();
SoftReference softReference =new SoftReference(obj);
这样obj这个对象的引用就是软引用了。
弱引用(WeakReference):跟软引用类似,但是不同点在于只要垃圾回收器(GC)扫描了这个引用所在区域的内存时,无论内存足够与否都会去回收这个对象的内存。使用方法:
Object obj = new Object();
WeakReference weakReference =new WeakReference(obj);
虚引用(PhantomReference):
这个引用随时都会被垃圾回收器(GC)回收使用方法同上,就是换个类。
其实说到上面那样的层面已经差不多了,想活学活用可以说在ListView优化的时候使用弱引用(WeakRefrence)引用ImageView对象,但是说这个的前提是你得熟悉ListView优化,不然有些老程序员可能会接着这个点问下去的。既然说道ListView优化这里多提一下ListView优化,可以由以下几种方式优化