前言

这种现象很正常,因为找一个程序员,当然希望他能做的业务越多越好,最好像机器猫一样,啥事儿都能搞定。然而,目前正在做的业务并没有扩张到那么大的规模,可能刚加入团队的时候,只能帮老员工打打下手,这在大厂里很常见。

但是,大厂团队一旦接到需求,确定要扩张业务,行动起来就是倾其全力,全军冲锋,这种时候,平时积淀的“造火箭”的“屠龙术”就有用武之地。如果没有这样的技术积淀,根本抓不住战机,等别人做出来了,自己的团队还没做出来,或者根本用不了,黄花菜都凉了。

谁能尽快搞定高精尖难的业务,谁就能当上领导。ali的双十一并发难题、12306的春运抢票难题,这些需求猛,规模大的业务,都得靠平时不会轻易去用的,从底层原理开始设计、改进的技术,靠工程师们一步步逼近性能极限、优化用户体验来实现。

只有提高自身的学习动力、学习毅力、学习能力,通过学习力的提高为创新提供源泉,不断飞跃,不断发展。在这个知识爆炸的社会,学习的速度要大于知识变更的速度,只有这样,才能不被社会淘汰。只有通过坚持不懈的学习,拓宽自己的思路,改变对事物的看法,改变自己的主观认识,辨证、全面的看待问题,提升自己的人生价值、理想和抱负,用真心渴望实现的目标来激励自己。下面为大家准备了**Android中高级专题的领取方式“加入交流群”,希望大家可以查漏补缺,提升自己。**

1、Activity生命周期?

onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDetroy()

2、Service生命周期?

service 启动方式有两种,一种是通过startService()方式进行启动,另一种是通过bindService()方式进行启动。不同的启动方式他们的生命周期是不一样.

通过startService()这种方式启动的service,生命周期是这样:调用startService() --> onCreate()–> onStartConmon()–> onDestroy()。这种方式启动的话,需要注意一下几个问题,第一:当我们通过startService被调用以后,多次在调用startService(),onCreate()方法也只会被调用一次,而onStartConmon()会被多次调用当我们调用stopService()的时候,onDestroy()就会被调用,从而销毁服务。第二:当我们通过startService启动时候,通过intent传值,在onStartConmon()方法中获取值的时候,一定要先判断intent是否为null。

通过bindService()方式进行绑定,这种方式绑定service,生命周期走法:bindService–>onCreate()–>onBind()–>unBind()–>onDestroy()  bingservice 这种方式进行启动service好处是更加便利activity中操作service,比如加入service中有几个方法,a,b ,如果要在activity中调用,在需要在activity获取ServiceConnection对象,通过ServiceConnection来获取service中内部类的类对象,然后通过这个类对象就可以调用类中的方法,当然这个类需要继承Binder对象

3、Activity的启动过程(不要回答生命周期)

app启动的过程有两种情况,第一种是从桌面launcher上点击相应的应用图标,第二种是在activity中通过调用startActivity来启动一个新的activity。

我们创建一个新的项目,默认的根activity都是MainActivity,而所有的activity都是保存在堆栈中的,我们启动一个新的activity就会放在上一个activity上面,而我们从桌面点击应用图标的时候,由于launcher本身也是一个应用,当我们点击图标的时候,系统就会调用startActivitySately(),一般情况下,我们所启动的activity的相关信息都会保存在intent中,比如action,category等等。我们在安装这个应用的时候,系统也会启动一个PackaManagerService的管理服务,这个管理服务会对AndroidManifest.xml文件进行解析,从而得到应用程序中的相关信息,比如service,activity,Broadcast等等,然后获得相关组件的信息。当我们点击应用图标的时候,就会调用startActivitySately()方法,而这个方法内部则是调用startActivty(),而startActivity()方法最终还是会调用startActivityForResult()这个方法。而在startActivityForResult()这个方法。因为startActivityForResult()方法是有返回结果的,所以系统就直接给一个-1,就表示不需要结果返回了。而startActivityForResult()这个方法实际是通过Instrumentation类中的execStartActivity()方法来启动activity,Instrumentation这个类主要作用就是监控程序和系统之间的交互。而在这个execStartActivity()方法中会获取ActivityManagerService的代理对象,通过这个代理对象进行启动activity。启动会就会调用一个checkStartActivityResult()方法,如果说没有在配置清单中配置有这个组件,就会在这个方法中抛出异常了。当然最后是调用的是Application.scheduleLaunchActivity()进行启动activity,而这个方法中通过获取得到一个ActivityClientRecord对象,而这个ActivityClientRecord通过handler来进行消息的发送,系统内部会将每一个activity组件使用ActivityClientRecord对象来进行描述,而ActivityClientRecord对象中保存有一个LoaderApk对象,通过这个对象调用handleLaunchActivity来启动activity组件,而页面的生命周期方法也就是在这个方法中进行调用。

4、Broadcast注册方式与区别

此处延伸:什么情况下用动态注册

Broadcast广播,注册方式主要有两种.

第一种是静态注册,也可成为常驻型广播,这种广播需要在Androidmanifest.xml中进行注册,这中方式注册的广播,不受页面生命周期的影响,即使退出了页面,也可以收到广播这种广播一般用于想开机自启动啊等等,由于这种注册的方式的广播是常驻型广播,所以会占用CPU的资源。

第二种是动态注册,而动态注册的话,是在代码中注册的,这种注册方式也叫非常驻型广播,收到生命周期的影响,退出页面后,就不会收到广播,我们通常运用在更新UI方面。这种注册方式优先级较高。最后需要解绑,否会会内存泄露

广播是分为有序广播和无序广播。

5、HttpClient与HttpUrlConnection的区别 
6、java虚拟机和Dalvik虚拟机的区别 
7、进程保活(不死进程)
8、讲解一下Context 
9、理解Activity,View,Window三者关系
10、四种LaunchMode及其使用场景
11、View的绘制流程
12、View,ViewGroup事件分发
13、保存Activity状态
14、Android中的几种动画
15、Android中跨进程通讯的几种方式
16、AIDL理解
17、Handler的原理
18、Binder机制原理
19、热修复的原理
20、Android内存泄露及管理
21、Fragment与Fragment、Activity通信的方式
22、Android UI适配
23、app优化
24、图片优化
25、HybridApp WebView和JS交互
26、JAVA GC原理
27、ANR的产生原因及解决方法
28、设计模式
29、MVP,MVC,MVVM
30、RecyclerView和ListView的区别
31、Universal-ImageLoader,Picasso,Fresco,Glide对比
32、Xutils, OKhttp, Volley, Retrofit对比


只看到自己在拧螺丝的人,无论当初热情再怎么大,终有一天会厌倦。

而为了造火箭而拧螺丝的人,总能够在僵硬和机械重复的执行流程当中,渐渐地找到改变和突破口,并最终进入到职场的金字塔尖端。

最后

———————祝大家前程似锦offer不断

为什么很多程序员面试造火箭,入职拧螺丝?相关推荐

  1. 如何看待程序员“面试造火箭、工作拧螺丝”?| 畅言

    作者 | 桃翁 本文经授权转自前端桃园(ID:fetaoyuan) 很多人总是抱怨面试官问一些平时不常用的知识点,比如算法.网络(TCP)等等,也就是大家常说的:面试造火箭,工作拧螺丝. 但是有没有想 ...

  2. 拒绝面试造火箭,工作拧螺丝——Java经典面试题分享『带答案』

    本文转载自:拒绝"面试造火箭,工作拧螺丝"--Java经典面试题分享『带答案』 1. Java三大版本 Java2平台包括标准版(J2SE).企业版(J2EE)和微缩版(J2ME) ...

  3. 面试造火箭,工作拧螺丝?看下这些大厂原题吧(iOS开发方向)

    需求已改活已加,加班通宵看朝霞.终是上线已延期,bug还是改不完. 面试造火箭,工作拧螺丝,虽然我只想拧螺丝,可是我需要用造火箭的技术去寻找拧螺丝的工作,如何能在面试过程中让自己处于不败的地步呢,刷题 ...

  4. 面试造火箭,工作拧螺丝!(窃格瓦拉曾经说过,打工是不可能打工的,这辈子不可能打工的!)

    真让你入职造火箭,你就怂了,拧螺丝挺好,都是从拧螺开始的 无论你在大企业还是小企业,无论你在国企.私企还是外企,只要是打工的,都是在拧螺丝,不管你是高级打工的还是低级打工的! 大家都在拧螺丝,没什么区 ...

  5. 昨天刚招到一个程序员,第一天入职就离职了....因为不加班

    前言,昨天刚招到一个程序员,第一天入职就离职了-因为不加班??? 看到这我惊呆了,还有程序员离职竟是因为不加班的?我们来看看网友们是怎么个看法的!! 其实知道的人都懂,哪是因为什么不加班,还不是因为工 ...

  6. 面试造航母,工作拧螺丝?各种缘由大揭秘!

    最近,程序员圈子里流行着一种说法:面试造航母,工作拧螺丝. 它描述了程序员工作中的一种怪象,面试的问题各种高大上: 什么分布式事务怎么实现啊 什么消息队列怎么保证幂等性啊 什么JVM的调优啊 .... ...

  7. 面试造飞机,工作拧螺丝。

    我们的一生当中,充满着各种面试,进入一些组织社团需要面试,找工作需要面试,相亲其实也是一种面试.有人喜欢面试,有人也畏惧面试,今天分享几个与面试相关的问答,希望对你有帮助. 1  销售管理岗  球友提 ...

  8. 【饭谈】如何避免“面试造航母,进来拧螺丝”

    很多同学喜欢抱怨一个现象:<面试造航母,进来拧螺丝>这个现象的提出距今已有七八年之久,在笔者第一次听到的时候,也发自内心的说:确实 现在的话,不得不怀念几年前的时代啊,那时候大家还都一腔热 ...

  9. 中国牛逼的程序员有哪些?入职华为两天转正,半个月升主任

    一提到程序员你会想起谁呢?可能你会想起一群穿着和格子衫坐在电脑前面工作的男士,或者你会想到一些的大佬,比如腾讯的马化腾,小米的雷军,还有那些牛逼却不为我们所知的程序员吗? 但是有很多我们没听过但是很牛 ...

最新文章

  1. CSRF(Cross-site request forgery)跨站请求伪造
  2. 最新县及县以上行政区划代码(截止2009年12月31日)
  3. CentOS 7 为firewalld添加开放端口及相关资料
  4. windows server 2003中继代理
  5. 小试牛刀Matplotlib
  6. C++Primer 中文版第5版 习题3.26
  7. 腾讯视频如何移出其他观看腾讯视频的设备
  8. 修改weblogic(10.3)域的启动JDK
  9. Node.js与Golang使用感受与小结【二】
  10. alter table add column多个字段_element中el-table单行暂无数据和整体暂无数据的默认修改...
  11. Flexsim 强化学习
  12. 外文论文_屏幕外文本用于复制和粘贴
  13. ddos应急处理_DDoS攻击应急体系知多少?
  14. 服务器是什么?服务器的作用与用途
  15. userland免root运行linux,UserLAnd(GNU/Linux安装)
  16. E. 手机服务(构造+拷贝构造+堆)
  17. TFT-LCD液晶显示器的工作原理
  18. 实验详解OSPF的几类LSA、FA转发规则(思科设备)
  19. 树莓派配置红外遥控及关联python程序
  20. 启元世界内推招聘(对标阿里P6-P7)

热门文章

  1. mysql 多个unique key_[MySQL]MySQL 中通过使用UNIQUE KEY 来控制字段值不重复的问题.
  2. php 获取对象中的元素个数组长度,php数组长度怎么获取
  3. html中open打开新网页,JavaScript-打开新窗口(window.open)
  4. 多显示器设置检测不到_这台显示器让我欲罢不能:华硕ROG PG279QR 电竞显示器 评测...
  5. java饿汉式有啥作用,Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?...
  6. 反向工程_反向工程:宾利精心复刻了1929 Blower车型
  7. C++对象模型1——类对象的sizeof、static成员、对象模型、this指针
  8. java SSM多操作注解回滚
  9. Java 获取并计算程序执行时间
  10. 为11.2.0.2 Grid Infrastructure添加节点