Android工程师两年后的处女面

浑浑噩噩的在现有的公司呆了两年,终于找了个机会去看看外面的公司。虽然结果还是看到世界残酷的一面。不过还是告诫自己:“不求有个完美的结果,只求有个成长的过程。

成长是一个需要不断沉淀以量变求质变的过程。写此篇文章做一次量变,如果上天眷顾我,请给个质变吧。(其实变质也行。。。)


前言:

为了方便后面描述,这里“外面的世界”就用XX来表示。


没带简历的脑残:

来到XX公司,木有带简历。而前台见了我,也木有给我打印简历。这点跟我之前对行政人员工作范围的认知领域大不相同。好吧!我等。这时候A君来了,把我领到一个角落,问我带简历的没有。我那时心想:悲剧,血条直接掉了20%。好吧,我带着80%的血量继续求虐。


丢三落四的自我介绍:

A君领着B君和我的简历过来了,首先呢就开始自我介绍吧。我把这两年来所有的项目经历大大咧咧的概述了一遍。这点后来回想起来,我发现了许多缺点。

1 说的语速太快。

2 没有把简历上面的项目说全。(这点反应出我简历的功课没有做全)

3 没把自己的优点挑明。


好吧,这里对自己提出以后关于“自我介绍环节”的建议:

1 注意语气淡定,语速放缓,言达其义。

2 对照着简历将项目一一介绍,不要忽略任何一个关键细节。如果有把握理解整个系统,就把项目说成是自己做的。

3 总结并分析出自己的优点。


较为被动的项目讨论:

A君是较为体贴的面试官。很体贴的,A君就开始询问我最近的项目的一些设计问题。我用话跟他沟通了很久,A君拿了一支笔,一张白纸把我所讲的画出来了。这时候我还没意识到应该由自己拿着笔和纸张来表达整个项目的结构与设计。悲剧,我了个去。A君画完图后,开始跟我纠结一些问题。提出的有两点,

1 如何保证AIDL的通信安全。(这里学到的是,AIDL进程通信的数据是可以截获的)。

2 如何保证AIDL的扩展性。比如说,进行一些API 的调用限制。

对于第一个问题,我感觉自己在给自己泼冷水。我很积极的就回答说:“我们没有考虑,不过要做的话可以采用一些数据的加密”等等。A君听后就开始跟我讨论“支付宝插件”的实现方式等等。后来我意识到他似乎向从我这边寻找什么答案,最后估计他得到的结论应该就是“把安全性较高的东西交给服务器做”。

对于第二个问题,由于我设计的接口是较为通用,他们也觉得十分可行,不过这个问题也浪费了不少时间。


后面呢,A君还是继续询问我关于项目。可能由于我一开始没有讲清楚整个项目地思路。导致他们不断地来猜测我的实现方式,以致后来他干脆问“这个项目你认为最难的地方在哪里”。这个问题着实很坑。我随便挑了一块就开始讲了,讲完之后他们也没有反应,这个“最难的地方的确应该在面试之前很好的思考一下”。


好吧,来做个总结。

首先,假设A君向跟我讨论007项目,我应该首先将007项目的整体架构在纸上勾勒出来,并把模块与模块之间比较关键的接口交互说清楚,这样可以避免猜测带来的时间消耗。

然后,对自身的项目业务要有一个全局的把握,并将A君在乎的业务流程,通过纸张表述出来。不要认为自己是客户端的,就只顾客户端就行了。A君更希望无论业务和技术,你都能全面的考虑清楚。


面试题目回顾:

讲之前,来介绍下B君。B君虽然长得很缅甸,但通常缅甸的人都不够体贴。基本上所有的基础题,都是他丢出来了,而且专门挑我在项目中没做过的东西来问我基础。当然,我在一些自信有能力解决的题目上,也犯了一些很傻的错误。而这些错误,在一个面试的过程中,往往是致命的。废话了这么多,下面来回顾下面试中所遇到的基础题吧。

1 有没遇到过OutOfMemory ----->如何解决----->有没有更多的优化点

2 什么情况Java对象没释放没释放----->如何解决

3 一个图片上传的功能,你会如何去实现它

4 数据库操作需要注意什么

5 如何优化数据库查询和插入

6 如何更快从SDCard读取数据

7 你简历上有些熟悉TCP/IP,那我想知道你理解到什么程度。

8 多线程如何同步。以下程序的执行结果会是如何:

  Looper.prepare()

  new Handler().post(new Runnable{

public void run(){

             notify()

       }

  })

  wait()

9  listview如何优化.

10 有没搞过p2p,流量控制的功能。


如何正确的回答题目

在写这篇文章时,本人还没弄清楚以上部分题目的答案。总得来说,这些题目主要以“如何优化程序”, “简历知识”以及“沟通过程触及的知识领域”等三个出发点来提出。按照本人以往解决问题的习惯,我会迫不及待的讲自己的答案说出来,而这些答案往往不够清晰且需要解释。

例如就“listview如何优化”这个问题,我废话没多说的就回答“用ViewHolder”。后面A君又问“listviewholder需要重载哪些方法”。当时我就愣了,做Android开发1年多,虽然没有用过listview开发过正式项目,但也不至于不知道“viewHoler是一个自定义静态类,并没有继承东西,根本不可能重载方法”。

这个问题的简单程度已经到了我不想回答的地步。而它却让我苦恼了一阵,并承认自己并不认识“listviewholder”。后来总结了一下,这个问题的原因是A君的语言表达能力,超出了我的听力水平。以致于我没有理解他其实是在讲“listview采用holder优化时,需要重写listview的getView方法”。


---------->“便秘,就不要怪地球没引力”

A君在一些概念的运用上,跟我之前的思维有些出入。这不是他的错,这绝对是我的错。竟然知道错了,便得知道以后怎么做。好吧,时光回退在面试那段时间,让我们再来一场完美的面试。


---------->完美的面试表现:

A君问:"listview如何优化"。我二话不说的把代码写在纸上,并把关键的代码写清楚。并将“为什么这样做”的原理详细的讲一遍。好吧,此时A君满意的点点头,继续下一个问题。


大大的总结

简历:简历上所写的东西都要掌握,而且越精通越好,不要将不懂的东西写到你的简历去,也不要将已经忘记的东西。写到你的简历去。对于简历,你需要一个非常完整,很有把握的掌握。
表达:习惯用纸,笔来表达自己,和解决问题。不要跟面试官侃侃而谈。程序员在没有电脑的时候进行“谈兵”,就应该在纸上。
节奏:把握好自己说话的节奏。从而更冷静的思考问题并回答问题,不骄不躁。

厚积薄发: 这个就不用说了。好好学习,天天向上吧。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值