本篇文章给大家谈谈大话西游源码分享网站怎么进,以及大话西游3源码对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
前言
本人18年毕业于一所末流一本,学的计算机科学与技术专业,主要学的Android开发。毕业后进入了一家创业公司上班,本来一切都按部就班的进行着,可是天不遂人愿。
在2019年5月初,公司倒闭,无奈走上找工作的道路,不想自己平时图安逸,不思进取,再次找工作才发现,Android行业也不是站在风口上,猪也能吹上天的世道了.作为技术小菜的我,在找工作那段时间真是战战兢兢,被打击得信心全无.最后用了2个月的时间去复习和学习,历经了几个月的时间,最终拿到了今日头条的offer。
本篇文章记录下我的学习方法和面试经历,分享给需要的人.勉励自己要时时进步,才不会被淘汰.
面经
从老公司倒闭后开始准备面试的东西,在5月底开始投,投递的公司有:
钉钉被捞+面试网易被捞+面试滴滴出行沉腾讯视频被捞+面试华为沉今日头条被捞+面试饿了么沉
钉钉、网易和腾讯视频都挂在了二面,今日头条是在复习了2个月后才去面试的,经过了3面(不包括HR面)拿到了offer。
钉钉面经
一面(50分钟)
MVC具有什么样的优势,各个模块之间怎么通信,比如点击Button后怎么通知Model?两个无限长度链表(也就是可能有环)判断有没有交点UITableView的相关优化KVO、Notification、delegate各自的优缺点,效率还有使用场景如何手动通知KVOObjective-C中的copy方法runtime中,SEL和IMP的区别autoreleasepool的使用场景和原理RunLoop的实现原理和数据结构,什么时候会用到block为什么会有循环引用使用GCD如何实现这个需求:A、B、C三个任务并发,完成后执行任务D。NSOperation和GCD的区别CoreData的使用,如何处理多线程问题如何设计图片缓存?有没有自己设计过网络控件?
二面(40分钟)
怎么判断某个cell是否显示在屏幕上进程和线程的区别TCP与UDP区别TCP流量控制数组和链表的区别UIView生命周期如果页面A跳转到页面B,A的viewDidDisappear方法和B的viewDidAppear方法哪个先调用?block循环引用问题ARC的本质RunLoop的基本概念,它是怎么休眠的?Autoreleasepool什么时候释放,在什么场景下使用?如何找到字符串中第一个不重复的字符哈希表如何处理冲突
网易面经
一面(30分钟)
TCP的三次握手说一下?为什么是三次握手?为什么是四次挥手?Service用过吗?生命周期说一下?当内存不足时Service被杀死了,如何重启这个Service。Fragment用过吗?Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?知道系统杀进程吗?如果栈中从底到顶现在是A,B,C,然后系统把应用杀了,重新点击,显示的是哪个Activity?这时如果C里面有Fragment是怎样恢复的?Android的持久化方式?ContentProvider自身是否存储数据?
二面(40分钟)
算法:实现String的endWith()方法。创建线程的方式?线程同步方法?垃圾回收机制说一下?多态说一下?重载和重写说一下?Android启动模式说一下?如果我要实现网页一样的效果,需要使用哪个模式?Android的适配了解吗?用过哪些第三方库?说一下Okhttp的优点?
腾讯视频面经
一面(40分钟)
mmap+native日志优化?广播和EventBus的区别?常用设计模式你了解哪些?跨进程通信有哪些?简单讲讲binder驱动吧?跨进程传递大内存数据如何做?说说ConcurrentHashMap的实现原理说下,初始化大小是多少?启动优化怎么优化?你写的rxpay和rxlogin具体怎么实现的?kotlin+fullter方面的
二面(50分钟)
单例设计模式都写写,静态内部类是怎么保证线程安全的?synchronized底层实现原理,ReentrantLock公平锁与非公平锁。主线程等待所有线程执行完毕,再执行某个特定任务怎么实现?原理和源码看过没?自定义view的一般流程,要注意些什么如何优化,点击事件和长按事件分别是怎么实现的?四种启动模式,在源码分析中的原理是怎样的?讲讲bindService的过程,你当初是怎么优化后台服务进程的?开发中你都用到了哪些设计模式?说说当时具体的场景。为什么你要用方法工厂,另外两种呢?RxJava在使用过程中碰到了某些不友好的错误一般怎么解决?发现了内存泄露一般怎么解决分析,有没有碰到过系统服务内存泄露的问题?给你个数1吧,比如1000011里面有几个1?快排了解不?最坏的情况是怎样?如果有大量重复数据怎么优化?
今日头条面经
一面(40分钟)
hashmap实现原理;自定义view的步骤;给出一个activity的布局:activity里包含viewgroup1,viewgroup1里包含viewgroup2,viewgroup2里包含button,问touch事件的传递和处理机制;Looper和handler的关系;activity从后台进程切换到前台经历的生命周期;有两个数字非常大已经超出了long型的范围,现在以链表的方式存储其中链表头表示最高位,例如1->2->3->4表示1234,请设计一个算法求出两数之和;
二面(50分钟)
怎样检测内存泄露,生产上怎么定位内存泄***r>2、怎样定位native层叠内存泄***r>3、bindservice和startservice的区别怎样不让别人绑定我的service服务音乐播放器怎样实现退出页面还可以播放contentprovider插入一条数据要做那些操作数据库事务和普通操作的区别,自己怎样实现事务内存泄露有哪些,handler,单例,webview,具体场景,怎样解决touch的事件传递怎样在子线程启动handler浮窗是怎么实现的,window是由什么管理的什么时候复写measurelayoutdrawmeasure方法是怎样将大小传递给系统的自定义控件的时候,canvas的savecanvas和restorecanvas的作用home按键的事件是怎么处理的音量键是怎样传递的aidl的oneway的作用
三面(1小时)
算法题两个栈实现队列算法题输入一个数组,想一种方法让这个数组尽可能的乱序,保证功能能实现的情况下时间复杂度和空间复杂度尽可能的小,可使用随机数函数。(面试官最后说了O(n)的时间复杂度能实现)写一个单例(自己写一种就行)ActivityA->ActivityB->ActivityA,ActivityA启动模式为singleTask,ActivityB启动模式为常规模式,问A启动B,B又启动A的生命周期调用顺序?你刚才提到onsaveinstancestate(),说一下调用时机,它用来干什么的。onsaveinstancestate()保存的那个参数叫什么?Bundle里面都放一些什么东西?怎么实现序列化?Parcelable和Serializable有什么区别?数组和链表的区别HashMap的结构以及原理了解View的绘制机制吗,能说一下吗我看你项目里用的Fragment能说一下FragmentA启动了FragmentB,FragmentB中按下返回键只退出FragmentB怎么实现。你还有什么要问的吗?
面试心得
1.算法题怎么答
面试官可能会问到你闻所未闻的算法,这时候你不应该自己瞎想,而是先和面试官把问题讨论清楚。要知道,通过沟通弄明白复杂的问题也是一种能力,在和面试官交流的过程中,不仅仅可以搞清楚题目真正的意思是什么,还可以展现自己良好的交流沟通能力。所以千万不要因为紧张或者害羞而浪费这次大好的机会。有些题目似曾相识,但是暂时没有思路。这时候不妨告诉面试官,给我一些时间思考这个题。然后不要急,不要慌,就当他不存在,拿出纸和笔慢慢算(这充分说明了面试戴耳机的重要性)。你一定要坚定一个信念:“任何一道稍微有难度的算法题,除非做过,否则一定是需要时间想的”。所以,合理的安排思考时间吧。如果十几分钟都想不出来,可以直接放弃。
2.遇到不会的问题怎么处理
这个问题有可能是面试官故意说得含糊不清,考察你的交流能力,也有可能是无意的,或者是你的理解方式出现了偏差。不管是以上哪种问题,你都应该先和面试官交流,直到你搞懂了面试官要问你什么,而不是按照自己的理解说了一堆无用的东西。举个例子,面试官可能会问了一道算法题:“如何判断两个无限长度的链表是否有交点?”。对于“无限长度”可以有不同的理解,如果真的是有无穷多个节点,那显然这个问题是无法解决的。但如果链表仅仅是有环,那么还是可以解决的。如果面试官的本意是链表有环,但你错误的理解成了无穷多个节点,那么必然会导致无法回答这个问题。而且这并非能力不足,而是属于交流沟通方面的失误,这也正是我想分享的“技巧”。
3.遇到真的不会的问题怎么处理
遇到不会的问题果断承认啊。如果是基本问题,比如问你哈希表怎么实现,你说不会,那么这次面试可能就悬了。如果是有一定难度的问题,那么你承认不会,也是一种明智之举,毕竟人无完人,一个问题不会并不能全盘否定一个人的能力。
4.心态
面试的时候一定要控制好心态,一个好的心态往往更容易拿到offer。就像我有次面试,因为心态没控制好,才面了30分钟不到就结束了,所以如果面试前你心态没控制好,宁可不去,也别抱着一个糟糕的心态去面试。
学习方法
1.多看一些实战项目视频
2.多刷一些算法题
因为一些大厂还是十分看重算法方面的,这里推荐大家刷《剑指offer》这本书。
3.刷书
感觉看书对提升非常明显,当然了还是要看书的内容干货多不多,这里分享下我看过的书:
《Android自定义控件入门和实战》《大话设计模式》《Andorid设计模式源码解析》《深入理解JVM》《Android进阶解密》
4.多看一些面经
看面经能让你了解这个公司面试的一些情况,了解面试官喜欢问的问题,特别是近期的面经。
最后
因为互联网、IT行业是一个发展迅速,日新月异的行业,而我们这些程序员只有不断的去学习,去进步才能不被淘汰。
上面我学习所用的视频、电子书籍和面试资料都可以分享给大家,需要的朋友可以私信我【资料】免费领取
如果这篇文章对大家有帮助的话请点赞、关注、转发谢谢!
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!
