简历编写注意事项:让 HR 快速找到关键信息

admin 2024-10-05 254 0

1. 简历

首先,准备好简历,然后再过一遍面试问题。

其实,写简历时可能需要注意以下几点:

1、直接按照姓名-工作年限-应聘职位的格式填写标题。比如小明——四年工作经验——Android开发高级工程师。因为你知道,HR的屏幕恢复得很快,你必须尽快让他看到他想看到的信息。 HR一开始最关心的就是工作年限和职位。你直接用最大的字体写在标题栏上,比很多人介绍半天项目最后写出年份要好得多。

2.先写个人信息。其实个人信息栏不需要写很多东西。最重要的是您的姓名、联系信息和性别。如果学校是名校,那就写在这里。如果你本科专业是计算机科学,也可以写在这里。如果这两者都不是,最好放弃它。写在最后,因为第一个永远是你最先看到的,也是你最有竞争力和炫耀的资本。

3、有技术博客和github开源项目的一定要先写。这是一个活生生的例子。我在华为面试的时候,面试官专门看了我csdn上的博客。然后他说文笔很好,给他留下了很好的印象,所以这绝对是加分项。最好写在前面。

其实一开始我并没有怎么去温习面试题,就是简单的看了一些基础知识点。因为我总觉得读的越多越难记住,而且最重要的是你不知道面试官会问什么。与其盲目地看知识点,不如出去面试几家小公司,感受一下面试的感觉。官员会询问具体区域,然后回来仔细查看。

2. 技能储备

(一)Java 1.HashMap和Hashtable有什么区别?

你必须阅读它的源代码!看源码!看源码!如果实在受不了,可以上网看看别人的分析。以下是一些简单的总结:

1.HashMap支持null Key和null Value;哈希表不允许这样做。这是因为HashMap对null进行了特殊处理,将null的hashCode值设置为0,并将其存储在哈希表的第0个桶中。

2.HashMap不是线程安全的。 HashMap的线程安全方法是Map map = Collections.synchronziedMap(new HashMap());哈希表是线程安全的。

3、HashMap默认长度为16,扩容为原来的2倍; Hashtable的默认长度是11,扩展是2n+1。

4.HashMap继承AbstractMap; Hashtable继承Dictionary

扩展、HashMap 与 ConcurrentHashMap、HashMap 与 SparseArray、LinkedArray 与 ArrayList、ArrayList 与 Vector

2.Java垃圾回收机制

需要了解JVM、内存划分——方法区、内存堆、虚拟机栈(线程私有)、本地方法栈(线程私有)、程序计数器(线程私有)、了解回收算法——标记和清除算法、可达性分析了解算法、标记整理算法、复制算法和生成算法的优缺点。

欲了解更多详情,您可以阅读其他同学写的内容,然后点击链接打开。

3.类加载机制

这个可以结合热修复来深入理解。点击打开链接

4.线程和线程池、并发、锁等一系列问题

这可以延长。如何自己实现线程池?

5.了解HandlerThread和IntentService

6.弱引用和软引用的区别

7. int 和 Integer 有什么区别?

主要考虑价值传递和引用传递问题

8. 手写生产者/消费者模型

(二)Android 1.android启动方式

需要了解Activity栈和taskAffinity

1.Standard:启动时系统默认多一个Activity实例。

2.SingleTop:在栈顶复用。如果在栈顶,生命周期不会经过onCreate()和onStart(),而是会调用onNewIntent()。适合推送消息详情页面,比如新闻推送详情Activity;

3.SingleTask:在栈中复用。如果它存在于堆栈中,则其上的所有 Activity 都会弹出堆栈,使其位于堆栈顶部。生命周期与SingleTop相同。 app首页基本都是用这个

4.SingleInstance:这是SingleTask的增强版本。系统会为要启动的Activity打开一个单独的栈。它是该堆栈中唯一的一个。适合新开的活动和可以独立打开的应用,比如系统闹钟、微信视频聊天界面。这是真的吗?如果你知道的话,请告诉我。谢谢!

另外,SingleTask和SingleInstance似乎会影响onActivityResult的回调。具体问题大家可以自行搜索,我就不赘述了。

Intent还需要进一步了解Action、Data、Category的用法和作用,以及常用的

Intent.FLAG_ACTIVITY_SINGLE_TOP

Intent.FLAG_ACTIVITY_NEW_TASK

Intent.FLAG_ACTIVITY_CLEAR_TOP

等等,我们仔细看看源代码。

2.视图绘制流程

ViewRoot->performTraversal()->performMeasure()->performLayout()->perfromDraw()->View/ViewGroupmeasure()->View/ViewGrouponMeasure()->View/ViewGrouplayout()->View/ViewGroup onLayout()->View/ViewGroupdraw()->View/ViewGrouponDraw() 我们来看看invalidate方法。有4个参数,不带参数有什么区别? requestLayout触发measure和layout,如何实现局部重测,避免全局重测问题。

3. 事件分发机制

->dispatchTouchEvent()->onInterceptTouchEvent()->onTouchEvent()requestDisallowInterceptTouchEvent(boolean)以及onTouchEvent()、onTouchListener、onClickListener的顺序

4.消息分发机制

这个测试很常见。一定要看源码,代码不多。带着几个问题去那里:

1、为什么一个线程只有一个Looper,也只有一个MessageQueue?

2、如何获取当前线程的Looper?它是如何实现的? (了解ThreadLocal)

3.任何线程都可以实例化Handler吗?有什么限制吗?

4.Looper.loop是无限循环。如果无法获取需要处理的Message,就会阻塞。那么为什么在UI线程中不会导致ANR呢?

5.Handler.sendMessageDelayed()如何实现延迟?结合Looper.loop()循环、Message=messageQueue.next()和MessageQueue.enqueueMessage()分析。

5.AsyncTask源码分析

android面试简历模板_简历面试模板免费使用_安卓面试简历

网上有很多利弊分析,我就不重复了。

6、如何保证Service不被杀死?如何保证进程不被杀死?

我面试的时候有3家公司问了这两个问题。

7.Binder机制,进程通信

Android使用的进程通信底层基本就是Binder、AIDL、Messager、broadcast、ContentProvider。并不是很深入的了解。至少可以写和读如何使用ADIL和如何使用Messager。另外,序列化(Parcelable 和 Serilized)需要进行比较。这方面,可以阅读任玉刚大师的《Android艺术开发探索》一书。

8、动态权限适配问题及换皮实现原理

对此,请阅读洪阳的博文。

9、SharedPreference原理,可以跨进程使用吗?如何实现?

(三)性能优化问题 1.UI优化

一个。合理选择RelativeLayout、LinearLayout、FrameLayout。 relativeLayout会导致子View调用onMeasure两次,而且当布局比较复杂时,onMeasure相对复杂且效率低下。 LinearLayout也会在weight>0的时候让子View调用两次onMeasure。 。 LinearLayout权重测量分配原理。

b.使用标签

c.要降低布局层级,可以通过移动开发者选项>GPU转场绘图查看。一般水平控制在4层以内。如果超过5层,就需要考虑是否重新布局。

d.自定义View时,重写onDraw()方法,不要在该方法中创建新对象,否则很容易触发GC,导致性能下降。

e.使用ListView时,需要复用contentView,使用Holder减少findViewById来加载View。

f.去除不需要的背景,getWindow().setBackgroundDrawable(null)

g。使用TextView的leftDrawabel/rightDrawable代替ImageView+TextView布局

2.内存优化

主要是为了避免OOM和频繁触发GC带来的性能下降。

a.Bitmap.recycle(),Cursor.close,inputStream.close()

b.加载大量Bitmap时,根据View大小加载Bitmap,合理选择inSampleSize、RGB_565编码方式;使用LruCache缓存

c.使用静态内部类+WeakReference代替内部类,如Handler、线程、AsyncTask

d.使用线程池来管理线程,避免创建新线程

e.使用单例保存Context,需要记得释放,或者使用全局上下文

f.注意释放静态集合对象

g。属性动画导致内存泄漏

h.使用webView时,需要在Activity.onDestory、webView.removeAllViews()和webView.destory()中移除并销毁

准备工作:使用LeakCanary检测内存泄漏

3.响应速度优化

如果Activity在5秒内无法响应屏幕触摸事件和键盘输入事件,就会发生ANR。如果BroadcastReceiver在10秒内没有执行操作,就会发生ANR。 20秒后发球会出现ANR。为了避免ANR,可以启用子例程。线程执行耗时操作,但子线程无法更新UI,所以线程通信需要Handler消息机制、AsyncTask、IntentService。

注:发生ANR时,adb pull data/anr/tarces.txt结合日志分析

4.其他性能优化

一个。常量用 static final 修改

b.使用 SparseArray 代替 HashMap

c.使用线程池来管理线程

d.ArrayList使用常规的for循环来遍历,LinkedList使用foreach。

e.不要过度使用枚举。枚举比整数占用更多的内存空间。

f.连接字符串时,优先使用StringBuilder和StringBuffer。

g。数据库存储采用批量插入+事务

(四)设计模式 1、单例模式:有多种写法。要求能手写并分析利弊。 volatile一般用在双重检查锁中,需要分析一下volatility的原理。

2、观察者模式:要求能够手写。有的面试官会问你在项目中使用过吗?对于那些没有听说过的人,可以谈谈EventBus,它使用观察者模式。

3、适配器模式:要求能手写。有的公司会问它和装饰者模式、代理模式有什么区别?

4. Builder模式+工厂模式:需要手写能力

5、策略模型:这个很少有人问,但是有些电商的人会问。

6. MVC、MVP、MVVM:比较异同,选择自己擅长的,重点关注。

(五)数据结构 1、HashMap、LinkedHashMap、ConcurrentHashMap在用法和原理上有什么区别?很多公司都会测试HashMap原理,通过它做一些扩展,比如中国13亿人口的年龄排序问题,年龄对应桶的数量。 ,相同的年龄和相同的哈希问题是相似的。

2.与ArrayList和LinkedList相比,这个比较简单。

3.我还对平衡二叉树、二叉搜索树和红黑树进行了测试。

4.Set原理,这个有点类似于HashMap的测试。测试与hash算法有关。有人问我常用的哈希算法。 HashSet内部使用HashMap

(6)算法:复习算法可以去LeetCode和牛客网复习题。

(7)源码理解项目中或多或少都会用到开源框架。很多公司喜欢问原理,有没有看过源码。比如最常用的网络框架Okhttp。现在Retrofit+RxJava也很流行。