Android面试题汇集
转载:http://blog.csdn.net/xiaole0313/article/details/62056612
持续更新答案及问题------
RXJava详解:http://gank.io/post/560e15be2dca930e00da1083
开源项目:一小时打造新闻app
ClassLoader:http://blog.csdn.net/briblue/article/details/54973413?locationNum=2&fps=1
android性能优化系列:http://www.csdn.net/article/2015-08-12/2825447-android-performance-patterns-season-3
android内存优化之OOM:http://www.csdn.net/article/2015-09-18/2825737/1
JVM面试知识点总结,高级Java工程师必备:http://www.importnew.com/23792.html
TCP流量控制与拥塞控制:http://blog.csdn.net/yechaodechuntian/article/details/25429143
TCP三次握手与四次挥手:http://blog.csdn.net/whuslei/article/details/6667471
android异步处理更新UI:http://blog.csdn.net/mylzc/article/details/6777767
Java泛型:http://www.cnblogs.com/lwbqqyumidi/p/3837629.html
事件分发机制:http://www.jianshu.com/p/e99b5e8bd67b
最新整理:
1.简述synchronized?Object;Monitor机制):synchronized关键字通过修饰一个方法或声明一个代码块,从而产生一个同步对象锁以及对应的同步代码块。每当有线程要对该同步代码块进行访问时,线程就会首先尝试去获取该对象锁,并在成功获取到对象锁后,对该同步代码块进行正常访问,在同步代码块访问过程中,线程会一直持有该对象锁直到同步代码块访问完毕才会释放。在上述线程持有同步锁并进行同步代码块访问过程中,其它线程将无法获得该对象锁,也无法访问该同步代码,这些线程都会被阻塞直到上述线程访问完毕。syschronized关键字,通过以上措施,确保每次只有一个线程能持有对象锁并对同步代码块进行访问,并在访问结束之前,不会对其它线程访问。也就说,即使同步代码块在执行过程中遭遇线程调度,其它线程也无法访问该同步代码块,直到该线程被重新调度并完成同步代码块的访问并释放对象锁。这样就保证了线程对同步代码块访问的连续性不受线程调度而中断。java中Object的理解:java把现实中的任何事物都当作一个对象 (Object),Java是面向对象的,。此处的Object在Java中被定义为一个顶级父类,它是任何类的父类,我们可以显示的继承它,也可以隐式继承。Object包含以下方法:equals(Object obj), finalize(), getClass, hashCode(), notify, notifyAll(), wait(), Clone(), toString(),其中方法会被高频率的使用,为了实现代码复用,Java设计者把这些常用的方法集中的放到了一个类中,就是Object类。java多线程同步机制:为了达到同步,java在一个监控器(Monitor)的基础上实现了一个巧妙的方案,监控器是一个控制机制,可以认为是一个很小的、只能容纳一个线程的盒子,一旦一个线程进入监控器,其它的线程必须等待,直到那个线程退出监控为止。通过这种方式,一个监控器可以保证共享资源在同一时刻只可被一个线程使用,这种方式称为同步。一旦一个线程进入一个实例的任何同步方法,别的线程将不能进入该同一实例的其它同步方法,但是该实例的非同步方法仍然能够被调用。
2.简述happen-before规则:java内存模型中定义的两项操作之间的偏序关系,如果A先行发生于操作B,意思就是说在发生操作B之前,操作A产生的影响都能被操作B观察到,”影响“包括修改了内存中共享变量的值、发送了消息、调用了方法等,它与时间上的先后发生基本没有太大关系,它是判断数据是否存在竞争、线程是否安全的主要依据。Java中有8条可保证happen-before的规则见链接。指令重排序:java语言规范规定了jvm线程内部维持顺序化语义,也就是说只要程序的最终结果等同于它在严格的顺序化环境下的结果,那么指令的执行顺序就可能与代码的顺序不一致。这个过程叫做指令的重排序。意义在于:jvm能够根据处理器的特性(CPU的多级缓存系统、多核处理器等)适当的重新排序机器指令,使机器指令更符合CPU的执行特点,最大限度的发挥机器的性能。在没有同步的情况下,编译器、处理器以及运行时等都可能对操作的执行顺序进行一些意想不到的调整。
3.JUC和Object;Monitor机制区别是什么;简述AQS原理;
4.简述DCL失效原因,解决方法;
5.简述nio原理;
6.jvm运行时数据区域有哪几部分组成,各自作用;
JVM运行时数据区简介:https://my.oschina.net/leejun2005/blog/486581
JVM学习笔记:http://blog.brucefeng.info/post/jvm-notes
JVM的组成:http://www.importnew.com/16388.html
JVM由4大部分组成:ClassLoader,Runtime Data Area,Execution Engine,Native Interface。
---运行时数据区共六部分,运行时数据区可以分为线程私有还是线程共享,总体分为如下两种,单个线程私有:程序计数器,JVM栈,本地方法栈,多个线程共享:堆数据区,方法区,运行时常量池。(1)程序计数器:用来记录当前线程正在执行的指令,如果当前线程正在执行的方法是本地方法,那么此刻程序计数器的值为undefined,这个区域是唯一一个不抛出OOM的运行时数据区。(2)JVM栈,随着一个方法的调用开始而创建,方法调用完成而销毁,存放方法中的局部变量,操作数栈等数据。当栈内存设置成固定值,程序执行需要的栈内存超过设定的固定值会抛出StackOverflowError错误。当栈内存设置成动态增长,JVM尝试申请的内存大小超过了可用内存时会抛出OutOfMemoryError错误。(3)存放本地方法的数据区,通常为C或C++,同样会抛出StackOverflowError和OutOfMemoryEror错误。(4)堆数据区:用来存放对象和数组,堆内存由多个线程共享,堆内存随着JVM启动而创建,垃圾回收就是操作这个数据区来回收对象进而释放内存。如果堆内存剩余的内存不足以满足于对象创建,JVM就会抛出OOM错误。(5)方法区:视为堆内存的一个逻辑部分,方法区存放类的信息,比如类加载器引用,属性,方法代码和构造方法和常量等,当方法区的可用内存无法满足内存分配需求时,JVM会抛出OOM错误。(6)运行时常量池:创建在方法区,当一个类或一个接口被创建的时候,JVM会创建一个运行时常量池,一个运行时常量池实际上是一个类或接口的class文件中常量池表的运行时展示形式。一个运行时常量池包含多种类型的常量。同样抛出OOM错误。
7.gc算法有哪些;gc收集器有哪些;
Java GC算法与GC收集器:http://www.importnew.com/23752.html------(1)标记-清除算法,首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被回收的对象。缺点:标记和清除过程中的效率不高;空间问题,标记清除后会产生大量不连续的内存碎片,空间碎片太多可能会导致,当程序在以后运行过程中需要分配较大对象时无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。(2)复制算法:将内存容量划分为大小相等的两块,每次只使用其中的一块,当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。解决了内存碎片问题,代价是将内存缩小为原来的一半,持续复制长生存期的对象则导致效率降低。(3)标记-压缩算法:标记过程与标记-清除算法一样,但不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉边界以外的内存。(4)分代收集算法:新生代每次垃圾收集时都有大批对象死去,只有少量存活,那就选用复制算法,只需要付出少量存活对象的复制成本就可完成收集,而老年代中对象存活率高,没有额外空间对它进行分配担保,就必须使用标记-压缩算法进行回收。
8.简述class加载各阶段过程;class;loader有哪些模型;
9.简述常用的JDK命令行工具;
10.简述字节码文件组成;
11.讲讲你平常是如何针对具体的SQL做优化;
12.mysql的存储引擎有哪些,区别;
13.gc:内存模型;
14.gc:垃圾回收;
15.多线程:如何实现一个定时调度和循环调度的工具类。但提交任务处理不过来的时候,拒绝机制应该如何处理;线程池默认有哪几种拒绝机制;
16.多线程:如何实现一个ThreadLocal;与同步的区别;当然ThreadLocal并不能替代同步机制,两者面向的问题领域不同。同步机制是为了同步多个线程对相同资源的并发访问,是为了多个线程之间进行通信的有效方式;而ThreadLocal是隔离多个线程的数据共享,从根本上就不在多个线程之间共享资源(变量),这样当然不需要对多个线程进行同步了。所以,如果你需要进行多个线程之间进行通信,则使用同步机制;如果需要隔离多个线程之间的共享冲突,可以使用ThreadLocal,这将极大地简化你的程序,使程序更加易读、简洁。
17.说说你了解的一个线程安全队列;
18.Atomic包的实现原理是什么;
19.CAS又是怎么保证原子性的;
20.string分析1000次循环subString用了多少内存;
21.OSI七层模型;
22.数据库(第一范式,第二范式,第三范式);第一范式,强调的是列的原子性,即列不能够再分成其他几列。第二范式,首先是第一范式,另外包含两部分内容,一个是表必须有个主键,二是没有包含在主键的列必须完全依赖于主键,而不能只依赖于主键的一部分。第三范式,首先是2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖,即不能存在,非主键列A依赖于非主键列B,非主键列B依赖于主键的情况。
Android基础
1.什么是ANR 如何避免它?答:在Android 上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择让程序继续运行,但是,他们在使用你的应用程序时,并不希望每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样,系统不会显示ANR 给用户。不同的组件发生ANR 的时间不一样,主线程(Activity、Service)是5 秒,BroadCastReceiver 是10 秒。解决方案:将所有耗时操作,比如访问网络,Socket 通信,查询大量SQL 语句,复杂逻辑计算等都放在子线程中去,然后通过handler.sendMessage、runonUITread、AsyncTask 等方式更新UI。无论如何都要确保用户界面操作的流畅度。如果耗时操作需要让用户等待,那么可以在界面上显示进度条。
2.View的绘制流程;自定义View如何考虑机型适配;自定义View的事件分发机制;View和ViewGroup分别有哪些事件分发相关的回调方法;自定义View如何提供获取View属性的接口-------------
3.Art和Dalvik对比;虚拟机原理,如何自己设计一个虚拟机(内存管理,类加载,双亲委派);JVM内存模型及类加载机制;内存对象的循环引用及避免------ART(Android Runtime),ART的机制与Dalvik不同,在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器(Just in time, JIT)转化为机器码,这回拖慢应用的运行效率,而在ART环境下,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫预编译(AOT--Ahead of Time),这样的话,应用的首次启动和执行就会变得更加快速。ART的系统性能显著提升,应用启动更快,运行更快,体验更流畅,触感反馈更及时,有更长的电池续航能力,支持更低的硬件,但机器码占用的存储空间更大,字节码变为机器码之后,可能会增加10%-20%,应用安装时间会变长。ART与Dalvik的区别:dalvik是执行的时候编译+运行,安装比较快,开启应用比较慢,应用占用空间小,ART是安装的时候就编译好了,执行的时候直接就可以运行,安装慢,开启应用快,占用空间大。
Java虚拟机的一个重要特点就是平台的无关性,把目标代码编译成字节码。Main()方法是程序的起点,它被执行的线程初始化为程序的初始线程。程序中其它的线程都由它来启动。java的线程分为两种:守护线程和普通线程。守护线程是java虚拟机自己使用的线程,比如负责垃圾收集的线程就是一个守护线程。当然,也可以把自己的程序设置为守护线程。包含Main()方法的初始线程不是守护线程。只要java虚拟机中还有普通的线程在执行,java虚拟机就不会停止。如果有足够的权限,你可以调用exit()方法终止程序。每个java虚拟机都有一个类加载器子系统,负责加载程序中的类型(class和interface),并赋予唯一的名字。每一个java虚拟机都有一个执行引擎负责执行被加载类中包含的指令。
JAVA类加载流程:Java系统自带三个类加载器(1)Bootstrap ClassLoader最顶层的加载类,主要加载核心类库,加载%JRE_HOME%\lib下的rt.jar, resources.jar, charsets.jar和class等。(2)Extention ClassLoader扩展的类加载器,加载目录%JRE_HOME%\lib\ext目录下的jar包和class文件。(3)Appclass Loader加载当前应用的classpath的所有类。加载顺序:Bootstrap ClassLoader,Extention ClassLoader, App classLoader。双亲委托:一个类加载器查找class和resource时,是通过委托模式进行,它首先判断这个class是不是已经加载成功,如果没有的话它不是自己进行查找,而是通过父加载器,然后递归下去,直到Bootstrap ClassLoader,如果Bootstrap ClassLoader找到了直接返回,如果没有找到,则一级一级返回,最后到达自身去查找这些对象,这种机制叫做双亲委托。
4.ddms 和 traceView的区别;
5.内存回收机制与GC算法(各种算法的优缺点以及应用场景);GC原理时机以及GC对象;内存泄露场景及解决方法;
6.四大组件及生命周期;ContentProvider的权限管理(读写分离,权限控制-精确到表级,URL控制);Activity的四种启动模式对比;Activity状态保存于恢复;
7.什么是AIDL 以及如何使用;
8.请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系;
9.Fragment生命周期;Fragment状态保存;
10.startActivityForResult是哪个类的方法,在什么情况下使用,如果在Adapter中使用应该如何解耦;
11.AsyncTask原理及不足;intentService原理;
12.Activity 怎么和Service 绑定,怎么在Activity 中启动自己对应的Service;
13.请描述一下Service 的生命周期;
14.AstncTask+HttpClient与AsyncHttpClient有什么区别;
15.如何保证一个后台服务不被杀死;比较省电的方式是什么;
16.如何通过广播拦截和abort一条短信;广播是否可以请求网络;广播引起anr的时间限制;
17.进程间通信,AIDL;
18.事件分发中的onTouch 和onTouchEvent 有什么区别,又该如何使用?
19.说说ContentProvider、ContentResolver、ContentObserver 之间的关系;
20.请介绍下ContentProvider 是如何实现数据共享的;
21.Handler机制及底层实现;
22.Binder机制及底层实现;
23.ListView 中图片错位的问题是如何产生的;
24.在manifest 和代码中如何注册和使用BroadcastReceiver;
25.说说Activity、Intent、Service 是什么关系;
26.ApplicationContext和ActivityContext的区别;
27.一张Bitmap所占内存以及内存占用的计算;
28.Serializable 和Parcelable 的区别;
29.请描述一下BroadcastReceiver;
30.请描述一下Android 的事件分发机制;
31.请介绍一下NDK;
32.什么是NDK库,如何在jni中注册native函数,有几种注册方式;
33.AsyncTask 如何使用;
34.对于应用更新这块是如何做的?(灰度,强制更新,分区域更新);
35.混合开发,RN,weex,H5,小程序(做Android的了解一些前端js等还是很有好处的);
36.什么情况下会导致内存泄露;
37.如何对Android 应用进行性能分析以及优化;
38.说一款你认为当前比较火的应用并设计(直播APP);
39.OOM的避免异常及解决方法;
40.屏幕适配的处理技巧都有哪些;
41.两个Activity 之间跳转时必然会执行的是哪几个方法?答:一般情况下比如说有两个activity,分别叫A,B,当在A 里面激活B 组件的时候, A 会调用onPause()方法,然后B 调用onCreate() ,onStart(), onResume()。这个时候B 覆盖了窗体, A 会调用onStop()方法. 如果B 是个透明的,或者是对话框的样式, 就不会调用A 的onStop()方法。
42.Handler与AsyncTask的区别;http://blog.csdn.net/yahohi/article/details/9031725,在Android中实现异步任务机制有两种方式,Handler和AsyncTask。Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但也是有缺点的,例如代码相对臃肿,在多个任务同时执行时,不易对线程进行精确的控制。为了简化操作,Android1.5提供了工具类android.os.AsyncTask,它使创建异步任务变得更加简单,不再需要编写任务线程和Handler实例即可完成相同的任务。
43.xml,json,gson之间有什么联系?XML全称叫做可扩展标记语言,它的结构相对简单,可读性强,但是对于一些比较复杂的数据结构就很难存储,JSON的话刚好弥补了XML的这些缺点,至于GSON的话,是因为Google的一个开源库而得名的,这个开源库可以很方便地将JSON数组转换为对象,这在开发中简化了将JSON的字段转换为属性的步骤。
44.jar包与aar包的区别?两者区别:
*.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。
*.aar:包含所有资源,class以及res资源文件全部包含
如果你只是一个简单的类库那么使用生成的*.jar文件即可;如果你的是一个UI库,包含一些自己写的控件布局文件以及字体等资源文件那么就只能使用*.aar文件。
45.Android控件RecyclerView和ListView的异同。http://www.tuicool.com/articles/aeeaQ3J
Java基础
1.集合类以及集合框架;HashMap与HashTable实现原理,线程安全性,hash冲突及处理算法;ConcurrentHashMap;
2.进程和线程的区别;
3.Java的并发、多线程、线程模型;
4.什么是线程池,如何使用? 答:线程池就是事先将多个线程对象放到一个容器中,当使用的时候就不用new 线程而是直接去池中拿线程即可,节
省了开辟子线程的时间,提高的代码执行效率。
5.数据一致性如何保证;Synchronized关键字,类锁,方法锁,重入锁;
6.Java中实现多态的机制是什么;
7.如何将一个Java对象序列化到文件里;
8.说说你对Java反射的理解; 答:Java 中的反射首先是能够获取到Java 中要反射类的字节码, 获取字节码有三种方法,1.Class.forName(className) 2.类名.class 3.this.getClass()。然后将字节码中的方法,变量,构造函数等映射成相应的Method、Filed、Constructor 等类,这些类提供了丰富的方法可以被我们所使用。
9.同步的方法;多进程开发以及多进程应用场景;
10.在Java中wait和seelp方法的不同;答:最大的不同是在等待时wait 会释放锁,而sleep 一直持有锁。wait 通常被用于线程间交互,sleep 通常被用于暂停执行。
11.synchronized 和volatile 关键字的作用;答:1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。2)禁止进行指令重排序。
12.volatile 本质是在告诉jvm 当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;synchronized 则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。
1.volatile 仅能使用在变量级别;synchronized 则可以使用在变量、方法、和类级别的
2.volatile 仅能实现变量的修改可见性,并不能保证原子性;synchronized 则可以保证变量的修改可见性和原子性
3.volatile 不会造成线程的阻塞;synchronized 可能会造成线程的阻塞。
4.volatile 标记的变量不会被编译器优化;synchronized 标记的变量可以被编译器优化
13.服务器只提供数据接收接口,在多线程或多进程条件下,如何保证数据的有序到达;
14.ThreadLocal原理,实现及如何保证Local属性;
15.String StringBuilder StringBuffer对比;
16.你所知道的设计模式有哪些; 答:Java 中一般认为有23 种设计模式,我们不需要所有的都会,但是其中常用的几种设计模式应该去掌握。下面列出了所有的设计模式。需要掌握的设计模式我单独列出来了,当然能掌握的越多越好。
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
17.Java如何调用c、c++语言;
18.接口与回调;回调的原理;写一个回调demo;
19.泛型原理,举例说明;解析与分派;
20.抽象类与接口的区别;应用场景;抽象类是否可以没有方法和属性;
21.静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?
22.修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法;
23.说说你对泛型的了解;
24.Java的异常体系;
25.如何控制某个方法允许并发访问线程的个数;
26.动态代理的区别,什么场景使用;
数据结构与算法
1.堆和栈在内存中的区别是什么(数据结构方面以及实际实现方面);
2.最快的排序算法是哪个?给阿里2万多名员工按年龄排序应该选择哪个算法?堆和树的区别;写出快排代码;链表逆序代码;
3.求1000以内的水仙花数以及40亿以内的水仙花数;
4.子串包含问题(KMP 算法)写代码实现;
5.万亿级别的两个URL文件A和B,如何求出A和B的差集C,(Bit映射->hash分组->多文件读写效率->磁盘寻址以及应用层面对寻址的优化)
6.蚁群算法与蒙特卡洛算法;
7.写出你所知道的排序算法及时空复杂度,稳定性;
8.百度POI中如何试下查找最近的商家功能(坐标镜像+R树)。
其他
1.死锁的四个必要条件;
2.常见编码方式;utf-8编码中的中文占几个字节;int型几个字节;
3.实现一个Json解析器(可以通过正则提高速度);
4.MVC MVP MVVM; 常见的设计模式;写出观察者模式的代码;
5.TCP的3次握手和四次挥手;TCP与UDP的区别;
6.HTTP协议;HTTP1.0与2.0的区别;HTTP报文结构;
7.HTTP与HTTPS的区别以及如何实现安全性;
8.都使用过哪些框架、平台;
9.都使用过哪些自定义控件;
10.介绍你做过的哪些项目;
数据库问题:
1.第一范式,第二范式,第三范式;http://blog.csdn.net/famousdt/article/details/6921622
第一范式:强调的是列的原子性,即列不能够再分成其它几列。
第二范式:首先是1NF,另外,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。
第三范式:首先是2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖,即不能存在:非主键列A依赖于非主键列B,非主键列B依赖于主键的情况。
非技术问题汇总
1.研究比较深入的领域有哪些;
2.对业内信息的关注渠道有哪些;
3.最近都读哪些书;
4.自己最擅长的技术点,最感兴趣的技术领域和技术点;
5.项目中用了哪些开源库,如何避免因为引入开源库而导致的安全性和稳定性问题;
6.实习过程中做了什么,有什么产出;
6.5枚硬币,2正3反如何划分为两堆然后通过翻转让两堆中正面向上的硬币和反面向上的硬币个数相同;
时针走一圈,时针分针重合几次;
7.N * N的方格纸,里面有多少个正方形;
8.现在下载速度很慢,试从网络协议的角度分析原因,并优化(网络的5层都可以涉及)。
HR问题汇总
1.您在前一家公司的离职原因是什么?
2.讲一件你印象最深的一件事情;
3.介绍一个你影响最深的项目;
4.介绍你最热爱最擅长的专业领域;
5.公司实习最大的收获是什么;
6.与上级意见不一致时,你将怎么办;
7.自己的优点和缺点是什么?并举例说明?
8.你的学习方法是什么样的?实习过程中如何学习?实习项目中遇到的最大困难是什么以及如何解决的;
9.说一件最能证明你能力的事情;
10.针对你你申请的这个职位,你认为你还欠缺什么;
11.如果通过这次面试我们单位录用了你,但工作一段时间却发现你根本不适合这个职位,你怎么办;
12.项目中遇到最大的困难是什么?如何解决的;
13.你的职业规划以及个人目标;未来发展路线及求职定位;
14.如果你在这次面试中没有被录用,你怎么打算;
15.评价下自己,评价下自己的技术水平,个人代码量如何;
16.通过哪些渠道了解的招聘信息,其他同学都投了哪些公司;
17.业余都有哪些爱好;
18.你做过的哪件事最令自己感到骄傲;
19.假如你晚上要去送一个出国的同学去机场,可单位临时有事非你办不可,你怎么办;
20.就你申请的这个职位,你认为你还欠缺什么;
21.当前的offer状况;如果BATH都给了offer该如何选;
22.你对一份工作更看重哪些方面?平台,技术,氛围,城市,money;
23.理想薪资范围;杭州岗和北京岗选哪个;
24.理想中的工作环境是什么;
25.谈谈你对跳槽的看法;
26.说说你对行业、技术发展趋势的看法;
27.实习过程中周围同事/同学有哪些值得学习的地方;
28.家人对你的工作期望及自己的工作期望;
29.如果你的工作出现失误,给本公司造成经济损失,你认为该怎么办;
30.若上司在公开会议上误会你了,该如何解决;
31.是否可以实习,可以实习多久;
32.在五年的时间内,你的职业规划;
33.你看中公司的什么?或者公司的那些方面最吸引你。