首先简单介绍一下自己的情况:本科山东大学,专业软件工程。没有任何项目经验,也没有任何科研竞赛经历,有参与过一篇SCI论文在投(不是第一作者,不过没啥用),当过几个学生干部,实习只有一个通信模块和商城模块的实习经历,其他的就没啥拿得出手的资历了。
是在腾讯会议上面试的,面试官听声音挺不错,简单调试了一下就开始面试。
简单自我介绍+讲项目
首先闲聊了一下项目一些技术无关的问题,然后开始讲项目技术难点。
我负责的是即时通信模块和商城模块,但是即时通信的实现有严重的漏洞,所以面试官问了如果重新来,我会用什么架构。
答:websocket长链接,然后说了一个简单的实现架构
消息发送失败如何处理 说了用户离线情况的处理
本地消息如何存储 用了本地数据库
有哪些表 消息到达时如何提升查找效率
然后提到了消息接收Service的保活
多进程保活( 一对一情况 一对多情况)这一块不是很清楚
面到这里已是大汗淋漓,严重怀疑我参加的不是一面面试
面试官也看出我的难处,于是安慰我没事,说不出来没关系只是刚好提到就顺便问一下,心有余悸继续面试。
Activity的生命周期
onCreate中的Bundle参数
Activity启动模式
说说Window
事件分发机制
实现一个自定义View,放一个图片可以单指拖动,双指缩放(双指手势不是很熟,图片相关也不熟)
说说AIDL
线程池
浏览一个网页的过程 越详细越好
三次握手 四次挥手
get post区别
算法题 猴子吃桃子每天吃一半再多一个,第十天剩1个,问一开始有多少个
回过头看仍然心有余悸,面试官也说我理论知识还需巩固,同时实践看得出比较少。
自己也认为知识的掌握停留在表层,一面都战战兢兢,到了二面深入可能会撞板,接下来多用心吧!
看了网友分享的这篇面经,感触很深,首先他认识到自己有很多做的不足的地方,比如不够理论知识不扎实,项目实战经验匮乏。有句话说的好“和优秀的同事一起共事,你也会变得优秀”,腾讯一面感觉让他窒息,但是生活就是这样的,如果你不努力,总会被人超越,久而久之机会懈怠,永远成为金字塔底端的人;其次要学习好的品格,比如谦逊、理智;还有要学会选择,选择行业,选择公司,选择团队,无论是工作还是生活,我们总会面临各种选择,选择没有对错,但是会选择,才能选择适合自己的方向,自己喜欢的方向,才能走的更远。
笔者2013年java转到Android开发,在小厂待过,也去过华为,OPPO等大厂待过,19年5月份进了字节跳动一直到现在。
被人面试过,也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!接下来分享一份大厂面试的心得。
1.关于日常学习
我们应该多找些好的开源网站,学习论坛,多学些和自己专业、所处行业、所做领域、自己喜好相关的知识。现在不都在提终身学习嘛,找到好的方法,才能做到终身学习,或者说才能更有效的终身学习。
要学的内容,完善基础,设计模式,算法,和工作相关的内容深度挖掘。
2.关于面试准备
(1)日常生活学习英语,好的工具:薄荷阅读、百词斩、流利说
(2)提前半年准备笔试面试,刷题、基础知识、高阶知识准备,LeetCode + 《剑指offer》
(3)简历,个人基本信息、博客地址、GitHub地址、联系方式(手机、邮箱、微信号);工作经历,一般倒叙,项目简介明了,SMART原则;专业技能,对于工作几年的朋友,主要写些和项目相关的内容,面试官更看重的是这个。简历怎么写,可以参考一下个各种开源网站
Android面试题大全已在开源项目:https://github.com/Android-Alvin/Android-LearningNotes 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
3.关于锻炼身体
我之前公司老板说的很对,先别去考虑锻炼带来的好处,找一个自己喜欢的运动去做,只有这样才能够坚持下来!
谦逊,时刻记住无论自己的水平有多高,都要保持谦逊的态度,及时你成为了某个领域的NO.1,如果不保持这种态度,你也很难保住你的位置,骄傲不会让人进步,不进则退。永远保持一种学习的心态,因为周围总会有人比你强!
努力,同为程序员,加班是家常便饭,我原来总会给自己找理由说没时间,但是看到我身边很多同事的经历,他们也要加班,但依旧能抽出时间学习,锻炼,所以时间真的是挤出来的,说没时间真的是借口,不是没时间,只是懒得做,而懒惰会上瘾,不过只要你相信,勤奋也是会上瘾的,既然都会上瘾,那还是勤奋一点好!
理智,做重大决定之前,先问自己三个问题:要什么?为什么?怎么做?只有头脑清醒,才能做出高效的判断。我在面试过程中,和后来的选择,在我看来也是比较理智的,未必一定正确,但是相对而言更有效率。成功对每个人来说都是概率问题,不努力不是一定不成功,但是努力会提升成功的概率!
1.职业规划(技术),三大方向:技术经理、架构师、专项领域专家
2.不同工作年限薪资、平台、成长的优先级
1-3年,平台>=成长>薪资
3-5年,平台>=薪资>=成长
5-10年,平台=薪资>成长(这个阶段也可以叫做规划)
3.跳槽选择,马云爸爸名言:要么钱没给到位,要么心里委屈了!跳槽三大原因:钱、价值实现、机会
4.大小公司问题,能去尽量去大公司,好处:1.镀金;2.优秀人才多,可学东西多,优秀人才能更促使自己进步。当然并不是说所有大公司都比小公司好,这个就要看选择了,相比而言同等条件下,优秀的大公司,要比优秀的小公司更有竞争力。
关于平台感触到时真的很多,我本人经历和和绝大部分程序员起点相同,我从毕业开始就在小公司,也看到了很多小公司存在的问题。
1.小公司人少,人员流动比例大(因为人少,很多人抱着提高经验去的,待的多数不会太久),相对比较容易成为公司还算可以的人,而一般对自己实力都会有比较清醒的认识,知道自己还差的远,而优秀的公司是由优秀的员工组成的,只有和优秀的人再一起才更有可能变得优秀,近朱者赤近墨者黑嘛。
2.好的平台笔试面试会有一定深度,以为对人员有一定要求,而小公司在开始初期,多数存在招人难的问题,如果要求高就更难,这是个很难解决的问题。
3.另外我也见证了抖音近两年的发展过程:技术上,不同时期选型、迭代、沉淀和更替;项目上,模块化到组件化再到插件化;效率上,一直探索最大效率的协同开发。其实这些内容,每个公司平台都会宣称会做、在做、要做、能做,但是平台和个人一样,都是想变好,但是最终成为行业霸主的却始终是少数,就像牛人也就那么些而已,抛开其他因素不谈,一个公司平台,对某件事的意念、毅力、迫切程度起很大作用,都想做到高效、高质,但是总是有做到好的,做到不好的,值得思考!
本文已在开源项目:https://github.com/Android-Alvin/Android-LearningNotes 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…