三年 Android 开发却只有一年工作经验,是怎么收到 offer 的?
面试官特别关注我的实践经验,面试官很和蔼,但我和面试题都很难。
数据库
1.数据库中什么时候用索引?(应用场景)
2.数据库中的索引一般是什么数据结构?
3.数据库中的事务是怎么回事?(我就知道这个…泪目)
网络:
http 和 https 的区别?追问:https 的安全信道建立的具体步骤?
TCP 为什么比 UDP 稳定?
JAVA:
进程和线程的区别?
线程安全怎么保证?
什么时候 volatile 可以保证线程安全?
除了 sychronized,还有什么可以保证线程安全的方法?
Android:
Activity A 启动 Activity B,两个 Activity 的生命周期顺序?(假设完全覆盖,且 standard Activity 启动模式)
如果按返回键呢?
sqlite、SharedPreferences 和文件的应用场景有啥区别?
手写代码:
一个机会均等的互赠礼物函数:输出一种完全随机的可能性,且不能自己送自己。
每个人准备一份礼物,收到一份礼物。
e.g.
1->N
2->3
…
N->1
第三家:
面试官是个东北银,一口浓厚的东北口音,觉得还挺平易近人?
一面
\1. 自我介绍
\2. 笔试题 1:删除无序链表中的重复结点(能否优化)
例:输入 3 -> 2 -> 4 -> 3 -> 5 输出 3 -> 2 -> 4 -> 5
解释:3 结点重复,将第二个’3’结点删除(这边的重复指的是结点的值重复)
\3. 笔试题 2:先说一下二叉树的有哪些遍历方法。写一个二叉树前序遍历的非递归形式。
\4. 讲一下 Java 的内存。
\5. 创建一个字符串对象,这个对象分配在哪里?
\6. String str = “123” + “456”;会创建几个对象。
\7. 问了操作系统的问题,没学过,所以也忘了问了什么。
\8. 数据存储有学过吗?数据库和文件保存有什么区别?
\9. Acti
vity 有哪些启动模式?
\10. 有什么要问的?
二面
\1. 上一轮面试做了哪 2 道面试题?
\2. 会哪些编程语言?
\3. 想做哪个方向?为什么?
\4. 对 Android 比较感兴趣,都学了些什么?
\5. ListView 源代码有看过吗?
\6. 想一下 ListView 应该是怎么实现的?链表?
\7. 给你 2 个线程,如何产生死锁?为什么会产生死锁?
\8. 外存有一定量的数据,需要读取到内存中处理,但是内存的大小是不知道的,要求如何能够读取尽量少的次数,才能处理完全部的数据?
三、醒悟
经过这段时间的面试,懂得了技术深度的重要性,还有职业规划的重要性!
我意识到自己不能这样再咸鱼下去了,我,一个工作三年却只有一年工作经验的 Android 开发,终于醒悟了!
1、要知道自己到底想要什么很重要。这是第一步,也是最重要的一步。因为这关系到你能够够选对学习方向,能否沉下心来去学习。
我们都知道,做自己感兴趣的事情的时候,是可以事半功倍的,因为你愿意去做它,而不是出于某种原因不得不去做。
因为热爱,是一个人奋斗和坚持的最好的动力。
我以前觉得选择远比努力重要,我选择一个我不喜欢的方向但是可以赚更多。选择远比努力重要的前提是你这个选择得正确,但是能够做出正确的选择的人,他本身就已经是一个优秀的人了。抛开这点不谈,在一个自己不喜欢的领域你能走的多深入呢?
2、要知道人外有人。自满,自大,自欺欺人是影响自己进步的绊脚石。如果你觉得,你现在已经很了不起了,你能做到这个程度已经很不错了,你就会停滞不前,然后浪费大把的时间。
我的经历文章开头也说了,我的学校是末流大学,计算机也不是学校很好的专业,消息也比较闭塞。在我的圈子里,我一直觉得自己很牛。
但是,当我开始准备春招准备校招的时候,我发现我错了,比我优秀的人一大把,我算什么东西。
以前觉得自己会的东西,出去一看,大家其实都会;
以前觉得很多知识等工作了再去学也不迟,出去一看,发现早就有人学会了。
但是,现在认识到这些已经有点晚了,因为已经开始找工作了,没有时间再去让你从头开始学了。
如果有一天,你觉得周围没有人比你更厉害了,一定要记得,不是你走到巅峰了,而是你的圈子,应该扩大了。
只有你的周围,有很多更厉害的人,你才能意识到自己的不足。
你想变成什么样的人,你就要去认识什么样的人,你的周围是什么样的人,你就会变成什么样的人。
要知道,物以类聚,人以群分。
评论