标签:面试题 blog 2020 details https article Android csdn net
一、腾讯
(一)计算机基础、网路技术及操作系统等题
1、http1.0、http1.1、http2.0区别
https://juejin.im/entry/5981c5df518825359a2b9476 推荐
答:(1)HTTP1.1与HPPT1.0主要区别:缓存处理、HOST头处理、带宽优化及网路连接的使用、长连接、错误通知管理等;
(2)SPDY与HPPT1.x主要区别:降低延迟(多路复用)、请求优先级、header压缩、基于HTTPS的加密传输协议、服务端推送等;
(3)SPDY与HPPT2.0主要区别:SPDY强制使用HPPTS、SPDY消息头压缩算法采用的是DEFLATE而HPPT2.0采用的是HPACK;
(4)HTTP2.0与HPPT1.1主要区别:文本协议采用新的二进制格式、多路复用、header压缩、服务器端推送等。
2、如何防止DNS劫持?
答:直接采用IP访问或使用安全可靠的dns服务(如:8.8.8.8)
(二)Java/kotlin题
1、类加载机制
https://baijiahao.baidu.com/s?id=1658299223471945338&wfr=spider&for=pc
https://blog.csdn.net/cnahyz/article/details/82219210(JDK 9 之前及之后之分)
答:(1)类加载过程分为七个阶段:加载->连接(验证->准备->解析)初始化->使用->卸载;
(2)JDK9之前的类加载器:
(3)JDK9类加器的改变
2、手写单列模式的几种实现,静态内部类是怎么保证线程安全的?
https://blog.csdn.net/yao_94/article/details/82764741
答:(1)静态内部类的单列好处:懒汉式(外部类被加载时,其内部类不会被加载,直到访问内部类的静态变量或给静态变量赋值时,调用类的静态方法时)、线程安全。
(2)根据类加载机制,虚拟机会保证在多线程环境下 < clinit > 方法能被正确的加锁、同步。如果有多个线程同时请求加载一个类,那么只会有一个线程去执行这个类的 < clinit > 方法,其他线程都会阻塞,直到方法执行完毕。同时,其他线程也不会再去执行 < clinit > 方法了。这就保证了同一个类加载器下,一个类只会初始化一次。(这也是为什么说饿汉式单例模式是线程安全的,因为类只会加载一次。)
3、sleep、wait、yield在多线程应用中的区别
https://blog.csdn.net/wanderlustLee/article/details/79659965
答:(1)sleep方法是Thread的类方法(静态方法),相当于让线程睡眠(让线程进入阻塞状态),交出CPU,让CPU去执行其他的任务,不会释放锁,也就是说如果当前线程持有对某个对象的锁,则即使调用sleep方法,其他线程也无法访问这个对象;
(2)wait方法是Object的成员方法,调用对象的wait()方法导致当前线程放弃对象的锁(线程暂停执行),进入对象的等待池(wait pool),OS会将执行时间分配给其它线程,同样也是进入阻塞态。只有调用对象的notify()方法(或notifyAll()方法)时才能唤醒等待池中的线程进入等锁池(lock pool),如果线程重新获得对象的锁就可以进入就绪状态。
(3)yield方法是Thread的类方法(静态方法),调用yield方法会让当前线程交出CPU权限,让CPU去执行其他的线程。它跟sleep方法类似,同样不会释放锁。但是yield不能控制具体的交出CPU的时间,另外,yield方法只能让拥有相同优先级的线程有获取CPU执行时间的机会。而且,调用yield方法并不会让线程进入阻塞状态,而是让线程重回就绪状态,它只需要等待重新获取CPU执行时间,这一点是和sleep方法不一样的。
4、使用JNI时,如何在C++代码中访问java对象
https://www.cnblogs.com/guanmanman/p/6811264.html JAVA调C/C++
https://www.cnblogs.com/guanmanman/p/6840226.html C/C++调用JAVA
答:(1)JAVA调用C/C++:
java代码中定义native方法,并用javah生成头文件,实现头文件中对应的方法,编译生成so,java代码加载so,然后在java代码中调用native方法。
(2)C/C++调用JAVA方法:
在C/C++代码中通过反射机制获取Java对象的引用,通过Java对象引用获取java类中的变量ID(方法ID),通过变量ID获取Java变量(通过方法ID调用实际的java方法)。
5、GC机制
https://mp.weixin.qq.com/s/8vXENzg580R7F2iNjSdHFw
https://blog.csdn.net/justloveyou_/article/details/71216049
答:(1)JVM内存区域:
(2)如何识别垃圾:引用计数法(存在循环引用情况)、可达分析法(现代虚拟机基本都是采用这种算法来判断对象是否存活)
(3)垃圾回收的主要方法:标记清除法、复制法、标记整理法、分代收集算法(现代虚拟机采用的首选算法)。
6、常用设计模式你了解哪些?
https://juejin.im/post/5eb03862f265da7bfd7f6c50#heading-7
https://blog.csdn.net/yucaixiang/article/details/90239817
https://www.cnblogs.com/adamjwh/ 23种设计模式
答:(1)设计模式六大原则:单一职责原则、开闭原则、里氏替换原则、迪米特原则、接口隔离原则、依赖倒置原则。
(2)23种设计模式:
单例模式
代理模式,分为静态代理和动态代理
策略模式
简单工厂模式
责任链模式(View的事件分发、okhttp拦截器等 )
观察者模式
适配器模式
7、跨进程通信有哪些?
https://www.cnblogs.com/zgq0/p/8780893.html
答:(1)管道,通常指无名管道。速度慢,容量有限,只有父子进程能通信;
(2)FIFO,命名管道,一种文件类型
(3)消息队列
(4)信号量
(5)共享内存,是最快的一种IPC,因为进程是直接对内存进行存取。但需要同步。信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问;
(6)socket
8、synchronized底层实现原理,ReentrantLock公平锁与非公平锁。
https://cloud.tencent.com/developer/article/1465413 (synchronized)
https://blog.csdn.net/fuyuwei2015/article/details/83719444 (ReentrantLock)
答:(1)synchronized底层实线原理:
a、上锁资源只有两类,一个是对象,一个是类;
b、Java的对象头和monitor,对象头中的Mark Word记录着对象的hashcode、锁信息、分代年龄或gc信息等,锁的类型和状态在对象头Mark Word
中都有记录,在申请锁、锁升级等过程中JVM都需要读取对象的Mark Word
数据;
c、每个锁都对应一个monitord对象,monitor对象存在于每个对象的对象头中(存储着的指针的指向)
(2)可重入锁。可重入锁是指同一个线程可以多次获取同一把锁。ReentrantLock和synchronized都是可重入锁。
可中断锁。可中断锁是指线程尝试获取锁的过程中,是否可以响应中断。synchronized是不可中断锁,而ReentrantLock则提供了中断功能。
公平锁与非公平锁。公平锁是指多个线程同时尝试获取同一把锁时,获取锁的顺序按照线程达到的顺序,而非公平锁则允许线程“插队”。synchronized是非公平锁,而ReentrantLock的默认实现是非公平锁,但是也可以设置为公平锁。
(2)ReentrantLock的基本实现可以概括为:先通过CAS尝试获取锁。如果此时已经有线程占据了锁,那就加入AQS队列并且被挂起。当锁被释放之后,排在CLH队列队首的线程会被唤醒,然后CAS再次尝试获取锁。在这个时候,如果:
非公平锁:如果同时还有另一个线程进来尝试获取,那么有可能会让这个线程抢先获取;
公平锁:如果同时还有另一个线程进来尝试获取,当它发现自己不是在队首的话,就会排到队尾,由队首的线程获取到锁。
9、说说 ConcurrentHashMap 的实现原理说下,初始化大小是多少?
https://www.cnblogs.com/huangjuncong/p/9478505.html
https://blog.csdn.net/qq_36865108/article/details/86649738
答:(1)JDK7内部采用了一个叫做 Segment 的结构,一个 Segment 其实就是一个类 Hash Table 的结构,很明显那就是查询遍历链表效率太低;
(2)JDK8开始做了一些数据结构上的调整。在 JAVA8 中它摒弃了 Segment(锁段)的概念,而是启用了一种全新的方式实现,利用 CAS 算法。底层依然由“数组”+链表+红黑树的方式思想,但是为了做到并发,又增加了很多辅助的类,例如 TreeBin、Traverser等对象内部类
(3)初始化大小为16。
10、JVM怎么保证gc效率跟线程运行效率的 ?
https://blog.csdn.net/weixin_30730053/article/details/98577257 提高JVM做GC的效率
https://blog.csdn.net/cutesource/article/details/5790888 多线程性能优化
11、接口暴露,但是不让别人调用,有哪些办法?
答:接口启用签名验证、参数加密等。
12、kotlin比Java好在哪里,是函数式编程吗?
https://github.com/heimashi/kotlin_tips#%E7%9B%AE%E5%BD%95
13、volatile 跟 synchronized区别?
https://www.cnblogs.com/sx-jd/p/10405792.html
答:(1)a、volatile本质是java虚拟机(JVM)当前变量在工作内存中的值是不确定的,需要从主内存中读取;synchronized则是锁定当前的变量(变量、方法、类),只有当前线程可以访问到该变量,其他的线程将会被阻塞;
b、volatile只能实现变量的修改可见性,并不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性。
c、volatile只能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的。
d、volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。
(2)volatile有两条关键的语义:a、保证被volatile修饰的变量对所有线程都是可见的;b、禁止进行指令重排序。
(三)Android题
1、Android事件分发机制,如何处理冲突?
https://juejin.im/post/5e16b001f265da5d16023d67
https://www.jianshu.com/p/38015afcdb58/
https://www.jianshu.com/p/d82f426ba8f7 如何处理冲突
答:事件分发方向Activity->window->View
//Activity
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
onUserInteraction();
}
//调用PhoneWindow.superDispatchTouchEvent()
if (getWindow().superDispatchTouchEvent(ev)) {
return true;
}
return onTouchEvent(ev);
}
//PhoneWindow
@Override
public boolean superDispatchTouchEvent(MotionEvent event) {
//mDecor即为DecorView
return mDecor.superDispatchTouchEvent(event);
}
//DecorView
public boolean superDispatchTouchEvent(MotionEvent event) {
//调用父类ViewGroup的dispatchTouchEvent进行事件分发
return super.dispatchTouchEvent(event);
}
2、Webview有哪些问题?
https://blog.csdn.net/qq_30983519/article/details/78375773
3、ListView缓存机制和优化
https://blog.csdn.net/Libmill/article/details/49644743 ListView缓存机制
https://blog.csdn.net/weixin_30920513/article/details/95719940 ListView优化
https://blog.csdn.net/lilong_19880408/article/details/78160084 图片错乱
答:(1)RecycleBin是AbsListView的一个内部类,它通过addScrapView ()、getScrapView()进行View的缓存和复用。
(2)ListView优化
①Item布局,层级越少越好,使用hierarchyview工具查看优化。
②复用convertView
③使用ViewHolder
④item中有图片时,异步加载
⑤快速滑动时,不加载图片
⑥item中有图片时,应对图片进行适当压缩
⑦实现数据的分页加载
(3)图片错乱是因为item复用及图片异步加载原因导致,可以在异步加载前为ImageView设置一张默认图片。
4、Bitmap图片优化
https://blog.csdn.net/pkorochi/article/details/104786262
https://blog.csdn.net/u012124438/article/details/66087785
答:(1)1、BitmapConfig的配置
2、使用decodeFile、decodeResource、decodeStream进行解析Bitmap时,配置inDensity和inTargetDensity,两者应该相等,值可以等于屏幕像素密度*0.75f
3、使用inJustDecodeBounds预判断Bitmap的大小及使用inSampleSize进行压缩
4、对Density>240的设备进行Bitmap的适配(缩放Density)
5、2.3版本inNativeAlloc的使用
6、4.4以下版本inPurgeable、inInputShareable的使用
7、Bitmap的回收
(2)在2.3以下的系统中,Bitmap的像素数据是存储在native中,Bitmap对象是存储在java堆中的,所以在回收Bitmap时,需要回收两个部分的空间:native和java堆。即先调用recycle()释放native中Bitmap的像素数据,再对Bitmap对象置null,保证GC对Bitmap对象的回收;在3.0以上的系统中,Bitmap的像素数据和对象本身都是存储在java堆中的,无需主动调用recycle(),只需将对象置null,由GC自动管理。
5、okhttp源码,分发器和5大拦截器
https://blog.csdn.net/u012881042/article/details/79759203
https://blog.csdn.net/json_it/article/details/78404010
6、线程间通信和进程间通信
https://blog.csdn.net/jisuanji12306/article/details/86363390 线程间通信
答:(1)volatile关键字,内存共享
(2)使用Object类的wait() 和 notify() 、notifyAll()方法
(3)使用JUC工具类 CountDownLatch
(4)使用 ReentrantLock 结合 Condition
(5)基本LockSupport实现线程间的阻塞和唤醒
https://www.cnblogs.com/zgq0/p/8780893.html 进程间通信
7、如何做进程保活?
https://www.jianshu.com/p/2272b9d42172
答:(1)提搞进程优先级;
(2)拉活
8、四大组件、Activity启动模式及生命周期
https://blog.csdn.net/qq_33140021/article/details/89483976 Activity启动模式及生命周期
答:四大组件分别为:Service、Activity、ContentProvider、BroadcastReciever
9、横竖屏切换时生命周期变化
https://blog.csdn.net/tuike/article/details/79401361
答:大于Android 3.2(API Level 13)
- 不设置Activity的android:configChanges,或设置Activity的android:configChanges="orientation"时,或是设置android:configChanges="orientation|keyboardHidden,切屏会重新调用各个生命周期,且都只执行一次。
- 设置Activity的android:configChanges="orientation|screenSize"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。
小于等于Android 3.2(API Level 13)
- 不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
- 设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
- 设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。
10、View绘制流程
https://www.jianshu.com/p/c5df0ac39e01?utm_campaign=haruki
https://juejin.im/post/5e17e4726fb9a030176e6352
https://www.cnblogs.com/Mr-East/p/11530645.html
答:RootViewImp.performTraversals():
private void performTraversals(){
...
int childWidthMeasureSpec = getRootMeasureSpec(mWidth,lp.width);
int childHeightMeasureSpec = getRootMeasureSpec(mHeight,lp.height);
...
//执行测量流程
performMeasure(childWidthMeasureSpec ,childWidthMeasureSpec);
...
//执行布局流程
performLayout(lp,desiredWindowWidth, desiredWindowHeight);
...
//执行绘制流程
performDraw();
}
11、EventBus
https://juejin.im/post/6844904192562200589
12、Rxjava
https://blog.csdn.net/reakingf/article/details/84845705
13、内存泄漏如何排查?
https://www.cnblogs.com/zquan/p/9614548.html
14、app的页面突然卡顿了一下,怎么排查?
https://blog.csdn.net/siyemuzi/article/details/102896685
https://www.jianshu.com/p/cd7fc77405ac
15、ANR怎么排查?定义是什么?
https://www.jianshu.com/p/388166988cef
https://blog.csdn.net/mysimplelove/article/details/93191748
答:InputDispating Timout(5s)、Service Timeout(前台20s,后台200s)、BroadcastQueue(前台10s,后台60s)、ContentProvider Timeout (ContentProvider的publish在10s内没进行完)。
16、RelativeLayout和LinearLayout怎么选?为什么?
https://blog.csdn.net/guyuealian/article/details/52162774
答:(1)RelativeLayout会让子View调用2次onMeasure,LinearLayout 在有weight时,也会调用子View 2次onMeasure ; (2)RelativeLayout的子View如果高度和RelativeLayout不同,则会引发效率问题,当子View很复杂时,这个问题会更加严重。如果可以,尽量使用padding代替margin。
(3)在不影响层级深度的情况下,使用LinearLayout和FrameLayout而不是RelativeLayout。
(4)提高绘制性能的使用方式 根据上面源码的分析,RelativeLayout将对所有的子View进行两次measure,而LinearLayout在使用weight属性进行布局时也会对子View进行两次measure,如果他们位于整个View树的顶端时并可能进行多层的嵌套时,位于底层的View将会进行大量的measure操作,大大降低程序性能。因此,应尽量将RelativeLayout和LinearLayout置于View树的底层,并减少嵌套。
17、mmap+native日志优化
https://blog.csdn.net/u014602917/article/details/105390368
18、广播与EventBus的区别
https://blog.csdn.net/qq_34895720/article/details/97134965
19、讲讲Handler的底层实现原理
https://blog.csdn.net/bboyfeiyu/article/details/38555547
https://blog.csdn.net/singwhatiwanna/article/details/17361775
答:共享变量实现线程切换。
20、Databingding有哪些了解
https://blog.csdn.net/weixin_43130724/article/details/95621789
https://blog.csdn.net/qinbin2015/article/details/93916842 原理
https://blog.csdn.net/liangjingkanji/article/details/82180695 如何使用、
答:这是因为dataBinding使用了 APT(Annotation Processing Tool)即注解处理器的技术,编译期间会扫描res/layout目录下所有的布局文件,只要有data标签,都会生成两个布局文件:配置文件和带标签的布局文件。
21、自定义Layout主要有哪几个流程?
https://blog.csdn.net/xmxkf/article/details/51500304
答:onMeasure()、onLayout()。
22、滑动过程卡顿,刷新率太低,怎么排查?
https://blog.csdn.net/seven_poul/article/details/70598908
https://www.jianshu.com/p/cd7fc77405ac
答:两个方面造成,一UI线程有耗时操作,二视图渲染时间过长。
打开Android DDMS工具,Android systrace、Method Profiling
23、启动优化怎么优化
https://blog.csdn.net/qian520ao/article/details/81908505
24、讲讲Binder驱动
https://blog.csdn.net/a740169405/article/details/94454223
25、跨进程传递大数据如何传输
https://blog.csdn.net/u011240877/article/details/72863432
26、IPC机制
https://blog.csdn.net/qq_31339141/article/details/102478597
27、ClassLoader、DexClassLoader、PathClassLoader
https://blog.csdn.net/static_zh/article/details/100084370
28、主线程等待所有线程执行完毕,再执行某个特定任务怎么实现?原理和源码看过没?
https://blog.csdn.net/chenyao1994/article/details/83037262
29、你们用的 okhttp ?那你有没有做过一些网络优化呢?比如弱网环境。
https://blog.csdn.net/u012881042/article/details/79759203
https://blog.csdn.net/json_it/article/details/78404010
30、Binder原理
https://blog.csdn.net/augfun/article/details/82343249
https://www.cnblogs.com/manmanlu/p/7216281.html
31、ServiceManager、ActivityManager、PackageManager
https://blog.csdn.net/qq_21139343/article/details/55259208
32、Framework层的核心类
https://blog.csdn.net/wk_beicai/article/details/79305027
33、Hook机制
https://blog.csdn.net/gdutxiaoxu/article/details/81459830
34、View的渲染机制
https://blog.csdn.net/ccj659/article/details/53219288
35、 Intent是如何实现Activity、Service等之间的解耦合的?
https://blog.csdn.net/iispring/article/details/48417779
36、Monkey能跑多长时间?
37、性能测试怎么样
38、各种SystemService怎么运行?
https://blog.csdn.net/u012654756/article/details/90674886
https://blog.csdn.net/geyunfei_/article/details/78851024
39、Android 沉浸式状态栏 怎么实现的
https://blog.csdn.net/qq_21937107/article/details/80293557
40、事件处理函数有哪几个,父View 子View 监听同一个事件,重写哪些方法。在哪个View重写?
https://juejin.im/post/5e16b001f265da5d16023d67
https://www.jianshu.com/p/38015afcdb58/
https://www.jianshu.com/p/d82f426ba8f7 如何处理冲突
41、ViewRootImpl接受事件吗?
https://blog.csdn.net/dongxianfei/article/details/83863888
答:
42、apk编译打包流程 V1,V2 签名区别
https://blog.csdn.net/brycegao321/article/details/79127159 apk编译打包流程
https://blog.csdn.net/xiaodongvtion/article/details/79506031 V1,V2 签名区别
答:
(2)v1签名是对jar进行签名,V2签名是对整个apk签名:官方介绍就是:v2签名是在整个APK文件的二进制内容上计算和验证的,v1是在归档文件中解压缩文件内容。二者签名所产生的结果:
v1:在v1中只对未压缩的文件内容进行了验证,所以在APK签名之后可以进行很多修改——文件可以移动,甚至可以重新压缩。即可以对签名后的文件在进行处理
v2:v2签名验证了归档中的所有字节,而不是单独的ZIP条目,如果您在构建过程中有任何定制任务,包括篡改或处理APK文件,请确保禁用它们,否则您可能会使v2签名失效,从而使您的APKs与Android 7.0和以上版本不兼容。
43、利用logging监听方法耗时,会不会让app增大延迟
https://blog.csdn.net/qeqeqe236/article/details/75417470
44、eventbus为什么要用CopyOnWriteList?
https://www.cnblogs.com/zhaimi/p/3938736.html
答:CopyOnWriteList线程安全。
45、插件化怎么加载资源的?
https://blog.csdn.net/xiao_nian/article/details/87254625
46、如果android没用对应的view,flutter能运行吗?
https://www.jianshu.com/p/6d17d5947652
答:能。
47、为什么采用flatbuffer? 比Json好在哪里?
https://blog.csdn.net/zm_yang/article/details/102922628
https://www.cnblogs.com/frankwt/p/12943924.html
答:flatbuffer是google发布的一个跨平台序列化框架具有如下特点。
- 可不需要解析、拆包,而直接访问序列化后的数据;
- 内存利用率高以及读取速度快;
- 灵活性;
- 生成代码量小;
- 强类型;
- 使用方便;
- 代码跨平台无其他依赖
flatbuffer将数据存在一个一维数组当中,缓存在一个bytebuffer当中。一个flatbuffer对象在数组中被分为两部分,元数据部分和数据部分。元数据负责存放相对于中间部分的索引,数据部分存放真实的value。分割的节点为(pivot point)。它的将数据以及对应的数据位置都保存在一个线性的数组中。使用的时候只需要把byte流发送出去,解析的时候只需要根据保存的位置,截取对应的数值即可。
48、如何处理Crash,NativeCrash呢?Google是怎么做到的?如果上报过程中再次产生Crash能不能捕捉到?
https://blog.csdn.net/u010144805/article/details/78560529
49、uncaughtException是被谁调用的,如果再次崩溃能不能捕获到?考虑设计一个crash捕捉模块。
https://blog.csdn.net/singwhatiwanna/article/details/17289479
答:com.android.internal.os.RuntimeInit 中commonInit()中设置。
50、Linux是怎么知道app崩溃的,如果想要在被kill前 ,做一些耗时操作,该怎么做?
https://blog.csdn.net/qq_42795723/article/details/104275558
51、如果让你实现一个调试器,你会怎么设计?静态调试?动态调试呢?
(四)算法题
https://www.cnblogs.com/yxl-2018/p/12383826.html
https://blog.csdn.net/qq_26079093/article/details/96605538
1、手写冒泡排序
2、通电小球
3、手写快速排序算法
4、100万个数字求100个最大值
二、字节跳动
(一)计算机基础、网路技术及操作系统等题
1、TCP拥塞控制
https://blog.csdn.net/m0_37962600/article/details/79993310
https://blog.csdn.net/qq_41431406/article/details/97926927
2、HTTP各种响应码,如404等
https://www.cnblogs.com/okcy/p/11376068.html
答:(1)1xx:消息
(2)2xx:成功
(3)3xx:重定向
(4)4xx:客户端错误
(5)5xx:服务器错误
3、TCP 三次握手四次挥手
https://blog.csdn.net/qq_38950316/article/details/81087809
4、GET请求与POST请求的区别
https://blog.csdn.net/qq_28483283/article/details/80207674
https://www.cnblogs.com/fan-1994716/p/11369529.html
答:(1)POST更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
(2)POST能发送数据更多的数据类型(get只能发送ASCII字符),POST支持多种编码方式,儿GET只支持URL编码;
(3)POST发送的数据更大(GET 一般来说提交的数据最大是2k;原则上URL长度无限制,但大多数浏览器通常都会限制url 长度在2k(2048字节byte) POST理论上没有限制,实际上IIS4中最大量为80k,IIS5中为100k。)
(4)POST比GET慢
a、浏览器请求tcp连接(第一次握手)
b、服务器答应进行tcp连接(第二次握手)
c、浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
d、服务器返回100 Continue响应
e、浏览器发送数据
f、服务器返回200 OK响应
(5)POST一般用于修改和插入数据,GET一般用于搜索排序和筛选之类的操作
5、HTTPS过程。
https://www.cnblogs.com/helloworldcode/p/10104935.html 推荐
https://blog.csdn.net/qq_33840251/article/details/91358884
https://blog.csdn.net/seujava_er/article/details/90018326
答:(1)客户端向服务端发送请求;
(2)服务端收到请求后,向客户端做出回应;
(3)客户端收到服务端回应后,首先验证服务器证书;
(4)服务端回应。
6、DNS解析过程,如果服务器ip地址改变了,客户端怎么知道呢(通过HTTPDNS)
http://www.mamicode.com/info-detail-3050028.html
https://blog.csdn.net/yangzhengqui/article/details/81529973
https://www.cnblogs.com/jimmyhe/p/11279762.html (HTTPDNS说明)
7、计算机OSI7层结构,每层的协议,每层的作用(及TCP/IP网路参考模型)
https://www.cnblogs.com/xq777/p/8207393.html
答:(1)OSI(Open System Interconnect Reference Model)七层分层:
物理层、数据链路层、网路层、传输层、会话层、表示层、应用层
(2)TCP/IP网路参考模型
网络接口层、网路层、传输层、应用层。
8、TCP与UDP区别,为什么UDP实时性比较好
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html 推荐
https://blog.csdn.net/qq_34671951/article/details/88857704
https://blog.csdn.net/striveb/article/details/84063712
https://blog.csdn.net/weixin_43884871/article/details/97967542
TCP | UDP | |
有无连接 | 面向连接 | 无连接 |
模式 | 面向字节流 | 面向报文 |
有无拥塞控制 | 有 | 无 |
通信关系 | 一对一 | 一对一,一对多,多对一,多对多 |
逻辑通信信道 | 全双工的可靠通信 | 不可靠信道 |
首部开销 | 20个字节 | 8字节 |
速度 | 慢 | 快 |
9、TCP的滑动窗口
https://www.cnblogs.com/hujinshui/p/10472671.html
https://www.cnblogs.com/shen-qian/p/12111666.html
10、Https与Http的区别,详细讲讲Https及中间人攻击
https://blog.csdn.net/qq_40373699/article/details/106860829
https://blog.csdn.net/qq_35642036/article/details/82788421
11、进程调度算法及优缺点
https://blog.csdn.net/lala_wang/article/details/81116781
答:(1)时间片轮转调度算法(RR):给每个进程固定的执行时间,根据进程到达的先后顺序让进程在单位时间片内执行,执行完成后便调度下一个进程执行,时间片轮转调度不考虑进程等待时间和执行时间,属于抢占式调度。优点是兼顾长短作业;缺点是平均等待时间较长,上下文切换较费时。适用于分时系统。
(2)先来先服务调度算法(FCFS):根据进程到达的先后顺序执行进程,不考虑等待时间和执行时间,会产生饥饿现象。属于非抢占式调度,优点是公平,实现简单;缺点是不利于短作业。
(3)优先级调度算法(HPF):在进程等待队列中选择优先级最高的来执行。常被用于批处理系统中,还可用于实时系统中。
(4)多级反馈队列调度算法:将时间片轮转与优先级调度相结合,把进程按优先级分成不同的队列,先按优先级调度,优先级相同的,按时间片轮转。优点是兼顾长短作业,有较好的响应时间,可行性强,适用于各种作业环境。
(5)高响应比优先调度算法:根据“响应比=(进程执行时间+进程等待时间)/ 进程执行时间”这个公式得到的响应比来进行调度。高响应比优先算法在等待时间相同的情况下,作业执行的时间越短,响应比越高,满足段任务优先,同时响应比会随着等待时间增加而变大,优先级会提高,能够避免饥饿现象。优点是兼顾长短作业,缺点是计算响应比开销大,适用于批处理系统。
12、操作系统32位,寻址空间
https://blog.csdn.net/xiaxiaojing/article/details/52457758
答:2的32次方字节,也就是4G的内存空间。
13、在浏览器输入网址经历的过程
https://www.cnblogs.com/xsj1/p/11202277.html
https://blog.csdn.net/dreamingbaobei3/article/details/87859700
14、Http的Header有什么?
https://blog.csdn.net/kdsde/article/details/83652662
15、TCP报文Header有什么?
https://www.cnblogs.com/HpeMephisto/p/11317686.html
答:TCP报文由首部和数据两部分组成,其中首部包括源端口号、目的端口号、序号、确认号、首部长度、保留位、标志、窗口大小、校验和、紧急指针、选项。
16、Http请求报文有什么?
https://www.cnblogs.com/ldq2016/p/9055933.html
答:(1)请求行
(2)请求头
(3)空行
(4)请求体(请求数据)
17、Http请求行里面包含什么?
答:请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。
18、消息队列是怎么传递数据的?
https://blog.csdn.net/huan_111011/article/details/77923390
19、Http1.x和2.0的区别
https://juejin.im/entry/5981c5df518825359a2b9476 推荐
答:(1)新的二进制格式
(2)多路复用
(3)Hearder压缩
(4)服务端推送
20、Http的响应码含义及作用
https://www.cnblogs.com/okcy/p/11376068.html
答:(1)1xx:消息
(2)2xx:成功
(3)3xx:重定向
(4)4xx:客户端错误
(5)5xx:服务器错误
21、TCP如何保证可靠性,如何进行流量控制
https://blog.csdn.net/liuchenxia8/article/details/80428157
答:TCP协议保证数据传输可靠性的方式主要有:校验和、序列号、确认应答、超时重传、连接管理、流量控制、拥塞控制。
22、ACK和SYN是什么意思
(1) ACK的全称为Acknowledge character,即确认字符,表示接收到的字符无错误;
(2) SYN:同步序列编号(Synchronize Sequence Numbers)。
23、Http中如何实现缓存,那OkHttp中如何实现缓存
https://www.cnblogs.com/chenqf/p/6386163.html Http中如何实现缓存
https://zhuanlan.zhihu.com/p/59765130 OKHttp源码分析——缓存机制
https://blog.csdn.net/liuxingrong666/article/details/84983541 OKHttp源码分析——缓存机制
24、使用http协议传输一个10兆的文件,中途断了,如何实现断点重传
https://blog.csdn.net/tianzhaoai/article/details/56673071
https://blog.csdn.net/cbjcry/article/details/84925073
(二)Java/Kotlin题
1、HashMap的结构及实现原理,Hashmap冲突检测算法
https://juejin.im/post/5e8d81d7f265da47f318acc6#heading-5
https://juejin.im/post/5d09f2d56fb9a07ec7551fb0#heading-9
2、数组和链表的区别
https://blog.csdn.net/qq_35044419/article/details/88580775
3、String、StringBuilder、StringBuffer区别
https://blog.csdn.net/itchuxuezhe_yang/article/details/89966303
4、final、finally、finalize区别
https://blog.csdn.net/meism5/article/details/89176986
5、synchronized的原理及作用
https://www.cnblogs.com/paddix/p/5367116.html
6、设计模式的六大原则是什么?你知道哪些设计模式?
https://juejin.im/post/5eb03862f265da7bfd7f6c50#heading-7
https://blog.csdn.net/yucaixiang/article/details/90239817
https://www.cnblogs.com/adamjwh/ 23种设计模式
7、简述JVM虚拟机内存模型
https://www.cnblogs.com/gw811/archive/2012/10/18/2730117.html
https://blog.csdn.net/xinzhou201/article/details/81981282
8、请编程实现生产着-消费者模型
https://blog.csdn.net/lvxin15353715790/article/details/89143121
https://blog.csdn.net/weixin_42146366/article/details/8747937
9、动态代理静态代理区别?
https://www.jianshu.com/p/f56e123817b5
https://blog.csdn.net/WangQYoho/article/details/77584832
10、替换多重嵌套的if else写法
https://blog.csdn.net/u010375903/article/details/81192507 策略模式+工厂模式
https://blog.csdn.net/weixin_45505313/article/details/103827220 switch + map
11、private和static修饰的方法可以重写吗?
https://blog.csdn.net/cbmljs/article/details/104963618
答:不能,重写是指子类能够根据需要实现父类的方法。
(1)private修饰,则对于子类而言是不可见的;
(2)静态方法是不会被覆盖的。Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。
12、ArryList、LinkedList、Vector的区别
https://blog.csdn.net/zhangqiluGrubby/article/details/72870493
13、比较String str = “aaaa" 和 String str=new String("aaaa")
https://blog.csdn.net/qq_22238199/article/details/78853255
14、内部类与静态内部类区别
https://www.cnblogs.com/hustdc/p/8894073.html
15、Java GC原理
https://mp.weixin.qq.com/s/8vXENzg580R7F2iNjSdHFw
https://blog.csdn.net/justloveyou_/article/details/71216049
16、java泛型、反射
https://www.jianshu.com/p/986f732ed2f1 java泛型
https://blog.csdn.net/sinat_38259539/article/details/71799078 java反射
17、进程和线程的区别
https://blog.csdn.net/ThinkWon/article/details/102021274
https://blog.csdn.net/kuangsonghan/article/details/80674777
18、并发和并行分别是什么意思,多线程是并发还是并行
http://imgtec.eetrend.com/d6-imgtec/blog/2018-03/11310.html
https://blog.csdn.net/why15732625998/article/details/79625556
答:多线程根据分配到CPU内核的个数,来判断是并发还是并行,所以都有可能。
19、内部类会有内存泄漏问题吗 内部类为什么能访问外部类的变量,为什么还能访问外部类的私有变量。
https://blog.csdn.net/zhangjg_blog/article/details/20000769
答:内部类对象持有外部类对象的引用(this),所以能访问外部类的变量(包含私有变量)
20、Java里面的锁有哪些
https://www.cnblogs.com/jyroy/p/11365935.html
21、Java的类加载过程
https://baijiahao.baidu.com/s?id=1662931890502685014&wfr=spider&for=pc
答:(1)加载
(2)连接(验证、准备、解析)
(3)初始化
(4)使用
(5)卸载
22、聊聊LinkList和HashMap
https://www.cnblogs.com/gossip/p/8745656.html
23、synchronized的锁升级机制
https://www.cnblogs.com/fbw-gxy/p/11689431.html
答:(1)无锁到偏向锁;
(2)偏向锁到偏向锁
(3)偏向锁到轻量级锁
(4)轻量级锁到重量级锁
24、sleep和wait的区别
http://baijiahao.baidu.com/s?id=1647423693517849309&wfr=spider&for=pc
https://blog.csdn.net/qq_20009015/article/details/89980966
25、如何判断是否要回收?
https://www.cnblogs.com/hujinshui/p/10441230.html
答:(1)引用计数算法
(2)可达分析算法
26、可达分析法中,怎么判断对象是否包含引用?
https://blog.csdn.net/Simon_09010817/article/details/105437160
https://blog.csdn.net/IBLiplus/article/details/82958721
答:判断一个对象到GC Roots节点有没有引用链相连接,即该对象是否包含引用。
27、说说CAS
https://blog.csdn.net/pcwl1206/article/details/84892287
https://blog.csdn.net/v123411739/article/details/79561458
28、ConcurrentHashMap和Hashtable的区别
https://blog.csdn.net/ZytheMoon/article/details/88376749
https://www.cnblogs.com/lijiahaoAA/p/12517318.html
https://www.cnblogs.com/heyonggang/p/9112731.html
29、重写和重载的区别
https://blog.csdn.net/geekmubai/article/details/81975990
30、多态是怎么实现的
https://blog.csdn.net/github_37130188/article/details/89931885
https://www.cnblogs.com/javastack/p/12765157.html
答:Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实现对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。三个特点:(1)继承(2)重写(3)父类引用变量指向子类的实例对象。
31、简述Java四种引用
https://juejin.im/post/5b82c02df265da436152f5ad
答:(1)强引用(2)软引用(3)弱引用(4)虚引用
32、线程的start()run()方法的区别
https://blog.csdn.net/QQ2899349953/article/details/81772104
https://www.cnblogs.com/zhaosq/p/10564698.html
33、线程池有几种类型?corepoolsize和maxpoolsize()的区别
https://blog.csdn.net/u011974987/article/details/51027795
https://blog.csdn.net/chzphoenix/article/details/78968075?utm_source=blogxgwz5
答:(1)newCachedThreadPool :缓存线程池,如果线程池长度超过处理需要,可回收空闲线程,若无可回收,则新建线程
(2)newFixedThreadPool : 定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
(3)newScheduledThreadPool : 计划线程池,支持定时及周期性任务执行。
(4)newSingleThreadExecutor :单线程线程池,用唯一的线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
34、HashSet和HashMap的区别
https://blog.csdn.net/chen213wb/article/details/84647179
https://baijiahao.baidu.com/s?id=1672061742901738578&wfr=spider&for=pc
35、 synchronized和volatile的区别
https://www.cnblogs.com/sx-jd/p/10405792.html
答:(1)a、volatile本质是java虚拟机(JVM)当前变量在工作内存中的值是不确定的,需要从主内存中读取;synchronized则是锁定当前的变量(变量、方法、类),只有当前线程可以访问到该变量,其他的线程将会被阻塞;
b、volatile只能实现变量的修改可见性,并不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性。
c、volatile只能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的。
d、volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。
(2)volatile有两条关键的语义:a、保证被volatile修饰的变量对所有线程都是可见的;b、禁止进行指令重排序。
36、乐观锁和悲观锁
https://www.jianshu.com/p/d2ac26ca6525
https://blog.csdn.net/qq_34337272/article/details/81072874
https://blog.csdn.net/thetimelyrain/article/details/100974565
37、什么是页式存储管理和段式存储管理?
https://blog.csdn.net/qq_44073742/article/details/105267011
38、什么是虚拟内存和物理内存?
https://blog.csdn.net/lvyibin890/article/details/82217193
39、进程之间的调度有哪些方法?线程的调度方法?
https://blog.csdn.net/vqtyh/article/details/78282555 进程调度
https://www.jianshu.com/p/80963dc65ec8 线程的调度方法
https://blog.csdn.net/qq_36071795/article/details/83890067
40、数据库索引,使用什么数据结构?
https://blog.csdn.net/u013257679/article/details/80690521
https://cloud.tencent.com/developer/article/1448821
答:底层结构为B+树。
41、死锁的形成?怎么避免死锁?
https://blog.csdn.net/changfengxia/article/details/80313822
42、进程的私有资源有哪些
https://www.xuebuyuan.com/707400.html
43、ClasssLoader的实现原理
https://blog.csdn.net/zzti_erlie/article/details/82757435
(三)Android题
1、简述Android View的绘制流程
https://juejin.im/post/5e17e4726fb9a030176e6352
https://www.cnblogs.com/Mr-East/p/11530645.html
2、自定义View的步骤
https://blog.csdn.net/huachao1001/article/details/51577291
3、简述Android事件分发机制,给出一个activity的布局:activity里包含viewgroup1,viewgroup1里包含viewgroup2,viewgroup2里包含button,问touch事件的传递和处理机制
https://juejin.im/post/5e16b001f265da5d16023d67
https://www.jianshu.com/p/38015afcdb58/
4、Android Handler机制及原理,Looper和Handler的关系
https://blog.csdn.net/bboyfeiyu/article/details/38555547
https://blog.csdn.net/singwhatiwanna/article/details/17361775
5、Activity从后台进程切换到前台进程的生命周期
答:之前的前台进程Activity调用onPause()方法,后台Activity调用onRestart()->onStart()->onResume() 进入前台,然后之前的前台Activity调用onStop()->onDestroy()方法。
6、HandlerThread讲一下
https://blog.csdn.net/weixin_41101173/article/details/79687313
7、主线程Looper一直循环查消息,为什么没卡主线程?
https://blog.csdn.net/xk7298/article/details/85214473
8、ListView与RecycleView的区别
https://blog.csdn.net/MarinaTsang/article/details/83870753
9、Bitmap相关,如有几种格式,分别占多少个字节等
https://blog.csdn.net/csdnnews/article/details/106700512
10、用MultiDex解决何事?其根本原因在于?Dex如何优化?主Dex放哪些东西?主Dex和其他Dex调用、关联,Odex优化点在于啥?
https://blog.csdn.net/qq_32816979/article/details/79482286
https://blog.csdn.net/xiaxl/article/details/83089944
https://www.jianshu.com/p/f48eac038384 ODEX优化点
11、LFU的底层设计原理,架构?什么时候使用?
https://www.cnblogs.com/hongdada/p/10406902.html
12、说一说Retrofit,及OkHttp中的责任链模式讲一下
https://blog.csdn.net/csdn_aiyang/article/details/80692384· Retrofit
13、App的启动过程
https://xujun.blog.csdn.net/article/details/99006458
https://www.jianshu.com/p/910df9643d8c
https://www.kancloud.cn/digest/androidframeworks/127782
14、Dalvik和Art虚拟机区别?
https://www.jianshu.com/p/8bb770ec4c48
答:从Android4.4引入ART,在4.4版本上,两种运行时环境共存。在5.0版本开始后,全部采用ART。
Dalvik采用的时JIT(Just-In-Time)编译模式,即即时编译;ART采用的是AOT(Ahead-Of-Time),应用在第一次安装时,字节码就会预先编译成机器码存储在本地。
15、多渠道打包如何实现(Flavor、Dimension应用)?从母包生出渠道包实现方法?渠道标识替换原理?
https://www.jianshu.com/p/739c45ae8360
16、Android打包哪些类型文件不能混淆?
https://www.jianshu.com/p/c7621946cac9
17、MVC、MVP、MVVM应用和彼此本质区别?
https://www.jianshu.com/p/5e94569a430a
18、Activity四大启动模式
https://blog.csdn.net/iteye_7884/article/details/82133973
答:(1)standard
(2)singleTop
(3)singleTask
(4)singleInstance
19、onSaveInstancestate() ,说一下调用时机,它用来干什么的
https://blog.csdn.net/Robin132929/article/details/86682719
20、onSaveInstancestate() 保存的那个参数叫什么?Bundle 里面都放一些什么东西?怎么实现序列化?Parcelable 和 Serializable 有什么区别?
https://www.jianshu.com/p/27181e2e32d2
21、简述Retrofit框架,实现机制、作用、实现机制
https://blog.csdn.net/csdn_aiyang/article/details/80692384
22、Android进程通信,Intent是如何实现进程间通信的?
https://blog.csdn.net/iispring/article/details/48417779
23、内存泄漏有哪几种情况?
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
24、简述下EventBus,如何实现事件通知的?
https://juejin.im/post/6844904192562200589
25、Bundle的数据结构,如何存储,既然有了Intent.putExtra,为啥还要用bundle?
答:bundle的内部结构其实是Map,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serializable 或Parcelable接口。
26、Android的IPC通信方式,是否使用过
https://blog.csdn.net/qq_31339141/article/details/102478597
27、Android的多点触控如何传递 核心类
https://blog.csdn.net/l707941510/article/details/81300333
https://blog.csdn.net/weixin_43887839/article/details/87882769
28、Asynctask的原理 ,AsyncTask是对Thread和Handler的组合包装
https://blog.csdn.net/google_huchun/article/details/65630850
29、android 图片加载框架有哪些,对比下区别
https://blog.csdn.net/github_33304260/article/details/70213300
30、图片框架的一些原理知识
31、其他的一些Android的模块化开发,热更新,组件化等知识
32、ContentProvider怎么升级维护?
33、Glide缓存特点?Glide是如何加载Gif图片的?
https://blog.csdn.net/u011418943/article/details/107026881 Glide缓存特点
https://blog.csdn.net/Coo123_/article/details/106428226 Glide是如何加载Gif图片的
34、RecycleView、ListView中的观察者模式
https://www.jianshu.com/p/336320f5e3b8 RecycleView
https://blog.csdn.net/xyh269/article/details/52535440 ListView
35、进程如何保活,怎样做才能让APP尽量不被杀死等
https://www.jianshu.com/p/2272b9d42172
答:(1)提搞进程优先级;
(2)拉活
36、Android 内存优化、性能优化
https://blog.csdn.net/xiangzhihong8/article/details/92800490 性能优化
https://www.cnblogs.com/renhui/p/11761586.html 内存优化
37、RGB_565位图,一个像素占多少位?
https://blog.csdn.net/csdnnews/article/details/106700512
答:5+6+5 = 16位=2个字节
38、简述Android Lanucher的架构,用到那些设计模式
40、LRU的底层设计原理,架构?什么时候使用?
https://www.cnblogs.com/hongdada/p/10406902.html
40、进程间通信的方式,安卓中有哪些方式,为什么是基于Binder的,不用传统的操作系统进程间通信方式呢
https://blog.csdn.net/hzw2017/article/details/81275438
https://blog.csdn.net/GitHub_YJH/article/details/96876789
41、一个app可以开启多个进程嘛,怎么做呢,每个进程都是在独立的虚拟机上嘛
https://blog.csdn.net/Young_xiaoT/article/details/51295783
答:一个APP可以开启多个进程,且每个进程都运行在独立虚拟机上。
42、异步消息处理流程,如果发送一个延时消息,messagequeue里面怎么个顺序,messagequeue是个什么数据结构
https://blog.csdn.net/qq_38875767/article/details/88687918
https://blog.csdn.net/kisty_yao/article/details/71191175 messagequeue是个什么数据结构
答:虽然MessageQueue叫消息队列,但是它的内部实现并不是用的队列,实际上它是通过一个单链表的数据结构来维护消息列表,单链表在插入和删除上比较有优势。
43、广播的种类,注册的方式,以及不同注册方式的生命周期
https://www.cnblogs.com/aademeng/articles/11025425.html
https://blog.csdn.net/huiblog/article/details/53234544
44、局部广播和全局广播的区别分别用什么实现的
https://blog.csdn.net/u010126792/article/details/82417190
45、activity和service的通信方式
https://blog.csdn.net/weixin_41101173/article/details/79718718
46、项目中定时为什么用AlarmManager,不用postDelayed
https://blog.csdn.net/Mr_LiaBill/article/details/49451509
47、项目中后台网络请求为什么用service不用线程
https://blog.csdn.net/pizza_lawson/article/details/42914745
48、安卓的新特性
https://blog.csdn.net/Carson1145/article/details/105333528 Android 11
https://blog.csdn.net/qq_44720366/article/details/105993034
49、Activity的生命周期,使用home键,再次打开Activity,生命周期是怎么样的
https://blog.csdn.net/c_z_w/article/details/53418098
50、介绍一下Android资源文件R.id的生成规则
https://www.jianshu.com/p/5cb55ef61048
https://blog.csdn.net/nio96/article/details/23737075
答:由AAPT工具生成。
(四)算法题
1、计算View树上所有View的数量,参数ViewGroup
2、给一个String字符串“com.byte.dance.hotc”,置换为“hotc.dance.byte.com”,要求只能原地置换,不能新建String,StringBuffer之类的
3、二叉树中序遍历,要求非递归
4、两个单链表的第一个相交节点
三、百度
(一)计算机基础、网路技术及操作系统等
1、TCP 三次握手/四次挥手,为什么要三次握手,四次挥手?
https://blog.csdn.net/qq_38950316/article/details/81087809
2、TCP和UDP的区别,分别有哪些应用场景?
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html 推荐
https://blog.csdn.net/qq_34671951/article/details/88857704
https://blog.csdn.net/striveb/article/details/84063712
https://blog.csdn.net/weixin_43884871/article/details/97967542
TCP | UDP | |
有无连接 | 面向连接 | 无连接 |
模式 | 面向字节流 | 面向报文 |
有无拥塞控制 | 有 | 无 |
通信关系 | 一对一 | 一对一,一对多,多对一,多对多 |
逻辑通信信道 | 全双工的可靠通信 | 不可靠信道 |
首部开销 | 20个字节 | 8字节 |
速度 | 慢 | 快 |
3、简述七层网路模型
https://www.cnblogs.com/xq777/p/8207393.html
4、Https证书校验过程
https://www.cnblogs.com/MR-Guo/p/11447856.html
(二)Java/kotlin题
1、kt的伴生对象是饿汉模式还是懒汉模式?
https://blog.csdn.net/shulianghan/article/details/105003973/
答:Kotlin伴生对象是懒汉式。(另:使用object关键字修饰类为饿汉式)
2、HashMap的原理?如何解决HashMap的线程安全问题
https://juejin.im/post/5e8d81d7f265da47f318acc6#heading-5
https://juejin.im/post/5d09f2d56fb9a07ec7551fb0#heading-9
3、java的hashcode和equals的区别
https://blog.csdn.net/Mrs_chens/article/details/92761868
https://www.cnblogs.com/justdojava/p/11271438.html
4、简述单例模式的实现方式,且单例模式有什么优缺点?
https://blog.csdn.net/SHYLOGO/article/details/107388234
5、简述Java的异常处理机制
https://blog.csdn.net/qq_15349687/article/details/82811581
6、多线程间如何进行信息通信
https://www.cnblogs.com/zyybb/p/10897923.html
7、多线程如何保证线程安全
https://blog.csdn.net/qq_26545305/article/details/79516610
8、简述线程池,线程池的原理
https://www.cnblogs.com/captainad/p/10943091.html
9、wait和sleep的区别
https://blog.csdn.net/wanderlustLee/article/details/79659965
10、java finalize用来干啥的,GC系统都做了,为啥还有finalize这个方法
https://blog.csdn.net/rsljdkt/article/details/12242007
11、简述java垃圾回收机制
https://blog.csdn.net/tangzwgo/article/details/97545742
12、JNI怎么使用
https://blog.csdn.net/wonghifong0223/article/details/73692711
https://www.cnblogs.com/zhujiabin/p/10571817.html
13、GC算法
https://mp.weixin.qq.com/s/8vXENzg580R7F2iNjSdHFw
https://blog.csdn.net/justloveyou_/article/details/71216049
答:(1)程序计算法
(2)可达分析法
14、抽象类和接口
https://blog.csdn.net/qq_34602647/article/details/80560741
15、匿名内部类介绍一下
https://blog.csdn.net/Dmeo_meng/article/details/91358993
https://blog.csdn.net/qq_33098039/article/details/78181287
16、简述ArrayList和LinkedList以及两者之间的区别
https://blog.csdn.net/u012216131/article/details/82500925
17、Java值传递还是引用传递
https://blog.csdn.net/q5706503/article/details/82910428
答:Java中没有引用传递,全是按值传递。
JAVA只有按值调用, 参数是什么都会复制一份再操作, 就算是对象的引用也会复制一份新的引用,只不过指向的是同一个对象
这种传参方式叫做按值传递, 传递的东西可以是引用。
18、简述JVM
https://blog.csdn.net/weixin_42382121/article/details/104695768
19、Java的数据类型,对应的包装类,自动装箱与拆箱
https://blog.csdn.net/yx0628/article/details/79413190
答:(1)char -> Character
(2)byte -> Byte
(3)short -> Short
(4)int ->Integer
(5)long ->Long
(6)float - >Float
(7)double ->Double
(8)boolean ->Boolean
(三)Android题
1、Handler.postDelayed的原理,内部怎么实现?Handler.postDelayed,阻塞后为什么不会ANR?
https://blog.csdn.net/dodod2012/article/details/99681424
https://blog.csdn.net/qingtiantianqing/article/details/72783952
2、简述什么是ANR,ANR怎么产生?怎么捕捉?
https://www.jianshu.com/p/388166988cef
https://blog.csdn.net/mysimplelove/article/details/93191748
3、内存泄漏是什么?怎么找?你处理过哪些内存泄漏?
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
4、以100ms/张的间隔时间播放100张图片,且每张图片需要400ms进行加载,如何设计
答:开放性回答。
5、简述Handler消息机制,内部实现原理
https://blog.csdn.net/bboyfeiyu/article/details/38555547
https://blog.csdn.net/singwhatiwanna/article/details/17361775
6、列举一个你在实际项目中所进行的性能优化
https://blog.csdn.net/xiangzhihong8/article/details/92800490 性能优化
https://www.cnblogs.com/renhui/p/11761586.html 内存优化
答:(1)稳定性(内存溢出、崩溃);
(2)流畅(卡顿);
(3)损耗(电量、网路、流量);
(4)安装包(APK瘦身)
7、简述Android事件分发机制
https://juejin.im/post/5e16b001f265da5d16023d67
https://www.jianshu.com/p/38015afcdb58/
9、SurfaceView的使用及其原理
https://www.jianshu.com/p/a2a235bee59e
https://www.cnblogs.com/renhui/p/8258391.html
9、WebView和H5相互调用的方法
https://blog.csdn.net/carson_ho/article/details/64904691
10、Java虚拟机和Dalvik虚拟机区别,ART虚拟机与Dalvik虚拟机区别
https://blog.csdn.net/jason0539/article/details/50440669
11、Service和IntentService
https://www.cnblogs.com/ldq2016/p/8192230.html
12、内存泄漏的情况
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
13、自定义View
https://blog.csdn.net/huachao1001/article/details/51577291
14、requestLayout和invalidate方法调用后,onMeasure、onLayout、onDraw的执行情况
https://blog.csdn.net/hxl517116279/article/details/90410345
https://blog.csdn.net/litefish/article/details/52859300
15、Activity启动模式
https://blog.csdn.net/iteye_7884/article/details/82133973
答:(1)standard
(2)singleTop
(3)singleTask
(4)singleInstance
16、AIDL使用及怎么实现回调
https://blog.csdn.net/crazymo_/article/details/80240840
https://blog.csdn.net/tgbus18990140382/article/details/52799899
17、Android中LocalServerSocket是干什么用的
https://www.cnblogs.com/bastard/archive/2012/10/09/2717052.html
(四)算法题
四、阿里巴巴
(一)计算机基础及网路技术
1、TCP/IP有几层
https://blog.csdn.net/weixin_43258908/article/details/102472194
(二)Java/kotlin题
1、 隐藏与重写的区别
https://www.cnblogs.com/weichunguang/p/7646933.html
2、进程间通信有几种,效率如何
https://www.cnblogs.com/zgq0/p/8780893.html
3、多态概念
https://blog.csdn.net/github_37130188/article/details/89931885
https://www.cnblogs.com/javastack/p/12765157.html
答:Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实现对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。三个特点:(1)继承(2)重写(3)父类引用变量指向子类的实例对象。
(三)Android题
1、一条最长的短信息约占多少byte?
https://blog.csdn.net/ouxiaoyong/article/details/78924239
答:手机短信的长度是由编码决定的,根据国际标准,每条短信最多发送1120位,即1120/8 = 140byte。
2、p2p和SMTP分别在哪层
答:(1)P2P属于TCP/IP中的传输层
(2)SMTP在应用层。
3、android中的动画有哪几类,它们的特点和区别是什么?
https://blog.csdn.net/carson_ho/article/details/79860980
4、 handler机制的原理
https://blog.csdn.net/bboyfeiyu/article/details/38555547
https://blog.csdn.net/singwhatiwanna/article/details/17361775
5、说说MVC模式的原理,它在android中的运用
https://blog.csdn.net/qq_27061049/article/details/83061248
6、Activity的生命周期
https://blog.csdn.net/qq_33140021/article/details/89483976 Activity启动模式及生命周期
7、Lanucher架构及用到的设计模式
(四)算法题
五、OPPO
(一)计算机基础、网路技术及操作系统等
1、TCP原理,如何保证稳定(与udp相比),阻塞
https://blog.csdn.net/fujibao/article/details/80845173 原理分析
https://blog.csdn.net/liuchenxia8/article/details/80428157 保证稳定性
2、文件上传、下载原理,下载中流的大小
3、CPU调度
https://blog.csdn.net/codeTZ/article/details/51254914
4、OKhttp是怎么复用连接的
https://blog.csdn.net/myth13141314/article/details/82794681 OkHttp3源码解析(三)——连接池复用
https://blog.csdn.net/myth13141314/article/details/82779847 OkHttp3源码解析(二)——拦截器链和缓存策略
(二)Java/kotlin题
1、反射如何实现
https://blog.csdn.net/sinat_38259539/article/details/71799078
2、泛型
https://www.jianshu.com/p/986f732ed2f1
3、Java四种引用(强软弱虚)及回收区别
https://juejin.im/post/5b82c02df265da436152f5ad
答:(1)强引用(2)软引用(3)弱引用(4)虚引用
4、SparseArray和HashMap区别
https://blog.csdn.net/shangsxb/article/details/78898323
5、锁的几种类型,是否在项目中使用
https://www.cnblogs.com/jyroy/p/11365935.html
6、ConcurrentHashMap的实现原理
https://www.cnblogs.com/huangjuncong/p/9478505.html
https://blog.csdn.net/qq_36865108/article/details/86649738
7、native层怎么检测内存泄漏
https://www.cnblogs.com/zzcperf/p/9563389.html
8、JNI动态注册和静态注册
https://www.cnblogs.com/itrena/p/7434185.html
9、so的加载流程是怎么样的,生命周期是怎么样的
(三)Android题
1、Service两种启动方式及区别
https://blog.csdn.net/Jsagacity/article/details/80523912?utm_source=blogxgwz6
2、Asynctask原理
https://blog.csdn.net/google_huchun/article/details/65630850
3、线程池原理,是否用过
https://www.cnblogs.com/captainad/p/10943091.html
4、性能优化,图片内存占用计算,持有引用
https://blog.csdn.net/xiangzhihong8/article/details/92800490 性能优化
https://www.cnblogs.com/renhui/p/11761586.html 内存优化
5、EventBus作用及原理
https://juejin.im/post/6844904192562200589
6、ListView的一些优化,如何复用、图片错位,现在用Glide
https://blog.csdn.net/Libmill/article/details/49644743 ListView缓存机制
https://blog.csdn.net/weixin_30920513/article/details/95719940 ListView优化
https://blog.csdn.net/lilong_19880408/article/details/78160084 图片错乱
7、LRU缓存原理
https://www.cnblogs.com/Jackie-zhang/p/9869652.html
8、Activity启动模式及应用场景
https://blog.csdn.net/iteye_7884/article/details/82133973
答:(1)standard
(2)singleTop
(3)singleTask
(4)singleInstance
9、静态广播和动态广播的区别
https://www.cnblogs.com/aademeng/articles/11025425.html
https://blog.csdn.net/huiblog/article/details/53234544
10、哪些场景会出现内存泄漏
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
11、RecycleView和ListView的区别
https://blog.csdn.net/MarinaTsang/article/details/83870753
12、开发中的常用的布局控件?什么情况下线性布局,什么情况下用相对布局?如何减少布局层级?
13、WebView交互原理?
https://blog.csdn.net/carson_ho/article/details/52693322
14、数据库,如何进行数据库迁移?
15、大数据加载
16、自定义View
https://blog.csdn.net/huachao1001/article/details/51577291
17、Handler源码分析
https://blog.csdn.net/bboyfeiyu/article/details/38555547
https://blog.csdn.net/singwhatiwanna/article/details/17361775
18、如何分析内存泄漏及如何处理
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
19、如何分析ANR及如何处理
https://www.jianshu.com/p/388166988cef
https://blog.csdn.net/mysimplelove/article/details/93191748
20、内存优化你做过没有?一张十万乘以十万的图片,如何加载才不会内存溢出?
https://blog.csdn.net/haoxuhong/article/details/80879982
21、内存溢出,内存抖动,内存泄漏你都碰到过吗?怎么解决的?如何区分这几种情况?怎么解决由内存泄漏而导致的内存溢出?
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
https://blog.csdn.net/huang_rong12/article/details/51628264 内存抖动导致的卡顿现象
22、okhttp源码
https://blog.csdn.net/u012881042/article/details/79759203
https://blog.csdn.net/json_it/article/details/78404010
23、热修复原理及几种方案对比
https://blog.csdn.net/u013928412/article/details/80428476
https://blog.csdn.net/feather_wch/article/details/87910364
https://www.cnblogs.com/popfisher/p/8543973.html
24、apk加固
https://www.jianshu.com/p/e836428d61b9
25、Glide,RxJava原理和性能优化
https://xuexuan.blog.csdn.net/article/details/107663872 Glide
https://blog.csdn.net/reakingf/article/details/84845705 RxJava
26、有没有优化在弱网时候的通信?
https://zhuanlan.zhihu.com/p/21615263
https://www.jianshu.com/p/3f31f9e8f5ea
27、mmap+native日志优化
https://blog.csdn.net/u014602917/article/details/105390368
28、Android启动流程
https://www.jianshu.com/p/910df9643d8c
https://www.kancloud.cn/digest/androidframeworks/127782
29、系统是怎么帮我们找到桌面应用的
https://www.jianshu.com/p/910df9643d8c
https://www.kancloud.cn/digest/androidframeworks/127782
30、页面刷新机制,GPU调试工具颜色值分别代表什么?
https://blog.csdn.net/litefish/article/details/53939882 页面刷新机制
https://www.jianshu.com/p/a0e8575e9846 GPU调试工具颜色值分别代表
31、LeakCanary的原理,哪些对象可以用来做gc-root
https://blog.csdn.net/import_sadaharu/article/details/81407728
32、UI怎么优化
https://blog.csdn.net/joye123/article/details/79425398
33、Tinker的原理
https://blog.csdn.net/qq_22393017/article/details/73999210
(四)算法题
六、VIVO
(一)计算机基础、网路技术及操作系统等
1、设计断点下载
https://blog.csdn.net/tianzhaoai/article/details/56673071
https://blog.csdn.net/cbjcry/article/details/84925073
(二)Java/Kotlin题
1、String和StringBuffer的区别
https://blog.csdn.net/itchuxuezhe_yang/article/details/89966303
(三)Android题
1、怎么设计主题(比如夜间模式)
https://blog.csdn.net/stven_king/article/details/78648095
2、什么是ANR,如何避免?
https://www.jianshu.com/p/388166988cef
https://blog.csdn.net/mysimplelove/article/details/93191748
3、然后避免内存溢出?
https://blog.csdn.net/liu3364575/article/details/80108312
https://www.jianshu.com/p/05a83c34a205
4、问AMS服务端有哪些类
https://blog.csdn.net/appdsn/article/details/79311526
5、service、动画
https://blog.csdn.net/Jsagacity/article/details/80523912?utm_source=blogxgwz6 service
https://blog.csdn.net/carson_ho/article/details/79860980 动画
(四)算法题
七、平安科技
(一)计算机基础、网路技术及操作系统等
1、http2.0 1.1 1.0的区别
https://juejin.im/entry/5981c5df518825359a2b9476 推荐
2、http如何保证安全性
https://blog.csdn.net/u013718730/article/details/94440881
答:(1)代码混淆,最直接的方式,可以保护加解密签名算法等;
(2)不直接使用userId等字段,而是使用有时效的Token;
(3)密码、token等敏感数据配合时间戳、干扰字符进行加解密;
(4)对整个请求体进行签名,防止修改;
(5)服务端通过签名、时间戳等,进行完整性、时效性、和重复性校验;
(6)向权威CA机构申请SSL证书,服务器使用https协议。
3、如何应对弱网环境
https://www.jianshu.com/p/3f31f9e8f5ea
答:(1)接口设计优化;
(2)数据压缩
(3)数据缓存
(4)界面优化
监控网路变化,若是弱网环境则不主动加载图片
(二)Java/kotlin题
(三)Android题
1、安装包优化有哪几种方式
https://cloud.tencent.com/developer/article/1466431
2、启动优化有哪几种方式
https://blog.csdn.net/qian520ao/article/details/81908505
3、View的绘制流程,每个方法干什么的,如果要获取View的宽高,在哪个方法里获取
https://juejin.im/post/5e17e4726fb9a030176e6352
https://www.cnblogs.com/Mr-East/p/11530645.html
4、android数据存储方式
https://blog.csdn.net/augfun/article/details/87903917
5、如果一个app无法访问网络,你怎么做数据存储
答:根据业务需求,先保存到本地,分两种情况:
(1)如果有实时性要求,课进行页面数据保存,当第二次打开时恢复数据到页面;
(2)如果对实时性要求不高,可以先保存数据,等网络恢复后再后台提交数据。
6、DVM跟JVM的区别
https://blog.csdn.net/jason0539/article/details/50440669
7、React Native跟原生开发的优劣
https://www.jianshu.com/p/d54bed57b262
答:
(四)算法题
八、大宇无限
(一)计算机基础、网路技术及操作系统等
1、HTTP有哪几种版本,版本间有什么区别?HTTPS跟HTTP有什么区别?
https://juejin.im/entry/5981c5df518825359a2b9476 HTTP有哪几种版本,版本间有什么区别
https://blog.csdn.net/qq_40373699/article/details/106860829 HTTPS跟HTTP有什么区别
https://blog.csdn.net/qq_35642036/article/details/82788421 HTTPS跟HTTP有什么区别
(二)Java/Kotlin题
1、Kotlin的访问权限
https://blog.csdn.net/wangcheeng/article/details/105692907
2、Koltin为什么比Java更安全
https://blog.csdn.net/luo_boke/article/details/107172965
3、Koltin比Java好在哪
https://blog.csdn.net/luo_boke/article/details/107172965
4、JVM的内存模型
https://www.cnblogs.com/gw811/archive/2012/10/18/2730117.html
https://blog.csdn.net/xinzhou201/article/details/81981282
5、JMM的内存模型
https://blog.csdn.net/wandoubi/article/details/80147858
6、为什么操作数栈是Thread-Private
https://www.cnblogs.com/w-wfy/p/6393992.html
https://blog.csdn.net/Jbinbin/article/details/86302768
7、ArrayList跟LinkeList区别
https://blog.csdn.net/u012216131/article/details/82500925
8、ArrayList如何扩容的,如何提高ArrayList的效率
https://blog.csdn.net/u010890358/article/details/80515284
https://blog.csdn.net/SeeBefore/article/details/3962079
9、动态代理静态代理区别
https://www.jianshu.com/p/f56e123817b5
https://blog.csdn.net/WangQYoho/article/details/77584832
(三)Android题
1、启动优化怎么做的
https://blog.csdn.net/qian520ao/article/details/81908505
2、如果给你个iOS APP,你打算怎么优化
3、apk为什么要签名,v1跟v2签名的区别
https://www.cnblogs.com/meiniang/articles/5806271.html apk为什么要签名
https://blog.csdn.net/xiaodongvtion/article/details/79506031 V1,V2 签名区别
4、apk从编译打包到安装的流程
https://blog.csdn.net/brycegao321/article/details/79127159 apk编译打包流程
https://blog.csdn.net/wy391920778/article/details/79881142 安装的流程
5、dex到odex为什么不能在编译期优化
https://blog.csdn.net/xiaoyantan/article/details/80001656
https://www.jianshu.com/p/89d06f626540
答:优化过程会根据不同设备上Dalvik虚拟机的版本、Framework库的不同等因素而不同。在一台设备上被优化过的ODEX文件,拷贝到另一台设备上不一定能够运行
6、热修复原理
https://blog.csdn.net/u013928412/article/details/80428476
(四)算法题
1、计算二叉树的深度
(五)其他
1、你的优势是什么?
九、美团
(一)计算机基础、网路技术及操作系统等
1、为什么TCP要三次握手,两次不行吗?
https://blog.csdn.net/qq_38950316/article/details/81087809
2、TCP与UDP的区别,OSI七层结构
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html 推荐
https://blog.csdn.net/qq_34671951/article/details/88857704
https://blog.csdn.net/striveb/article/details/84063712
https://blog.csdn.net/weixin_43884871/article/details/97967542
TCP | UDP | |
有无连接 | 面向连接 | 无连接 |
模式 | 面向字节流 | 面向报文 |
有无拥塞控制 | 有 | 无 |
通信关系 | 一对一 | 一对一,一对多,多对一,多对多 |
逻辑通信信道 | 全双工的可靠通信 | 不可靠信道 |
首部开销 | 20个字节 | 8字节 |
速度 | 慢 | 快 |
https://www.cnblogs.com/xq777/p/8207393.html OSI七层结构
3、DNS如何解析域名
http://www.mamicode.com/info-detail-3050028.html
https://blog.csdn.net/yangzhengqui/article/details/81529973
https://www.cnblogs.com/jimmyhe/p/11279762.html (HTTPDNS说明)
4、HTTPS与HTTP的区别,HTTPS为什么安全
https://blog.csdn.net/qq_40373699/article/details/106860829
https://blog.csdn.net/qq_35642036/article/details/82788421
5、在浏览器输入一个网址到网页显示出来有哪些经过
https://www.cnblogs.com/xsj1/p/11202277.html
https://blog.csdn.net/dreamingbaobei3/article/details/87859700
(二)Java/Kotlin题
1、生产者消费者模式
https://blog.csdn.net/lvxin15353715790/article/details/89143121
https://blog.csdn.net/weixin_42146366/article/details/8747937
2、wait 和 sleep的区别
https://blog.csdn.net/wanderlustLee/article/details/79659965
3、String、StringBuffer 、StringBuilder的区别
https://blog.csdn.net/itchuxuezhe_yang/article/details/89966303
4、String a = "abc" 和 String str = new String(“abc”) 的区别
https://blog.csdn.net/qq_22238199/article/details/78853255
5、谈谈四种引用
https://juejin.im/post/5b82c02df265da436152f5ad
答:(1)强引用(2)软引用(3)弱引用(4)虚引用
6、HashSet和HashMap的关系
https://blog.csdn.net/chen213wb/article/details/84647179
https://baijiahao.baidu.com/s?id=1672061742901738578&wfr=spider&for=pc
7、HashMap与HashTable的区别
https://blog.csdn.net/xuhuaabc/article/details/91475761
8、ConcurrentHashMap知道吗,ConcurrentHashMap在jdk1.8之后的优化
https://www.cnblogs.com/huangjuncong/p/9478505.html
https://blog.csdn.net/qq_36865108/article/details/86649738
9、重写和重载的区别
https://blog.csdn.net/geekmubai/article/details/81975990
10、死锁的四个条件
https://blog.csdn.net/changfengxia/article/details/80313822
11、线程的所有状态
https://blog.csdn.net/pange1991/article/details/53860651
12、synchronized关键字
https://cloud.tencent.com/developer/article/1465413
13、HashMap的hash算法和扩容机制的原因
https://juejin.im/post/5e8d81d7f265da47f318acc6#heading-5
https://juejin.im/post/5d09f2d56fb9a07ec7551fb0#heading-9
14、线程池的参数和工作流程
https://www.cnblogs.com/captainad/p/10943091.html
15、数据库的范式及数据库中事务的特性
https://blog.csdn.net/dosthing/article/details/87954213
16、synchronize和lock区别
https://blog.csdn.net/hefenglian/article/details/82383569
17、用过的设计模式或者是安卓中遇到的设计模式
https://juejin.im/post/5eb03862f265da7bfd7f6c50#heading-7
https://blog.csdn.net/yucaixiang/article/details/90239817
18、责任链模式有哪些优势
https://blog.csdn.net/lsx2017/article/details/105006738
19、实现一个单例模式,DCL为什么要两次判断null呢?为什么使用volatile?
https://blog.csdn.net/xiaobao5214/article/details/88172375
https://blog.csdn.net/weixin_38983929/article/details/103006376 两次判断的作用
20、java类加载和内存管理机制
https://baijiahao.baidu.com/s?id=1662931890502685014&wfr=spider&for=pc java类加载
https://www.cnblogs.com/steffen/p/11368018.html 内存管理机制
21、GC过程
https://mp.weixin.qq.com/s/8vXENzg580R7F2iNjSdHFw
https://blog.csdn.net/justloveyou_/article/details/71216049
22、知道哪些数据结构,红黑树的特点
https://blog.csdn.net/u011442726/article/details/96909331
23、synchronzed修饰普通方法和静态方法有什么不同?
https://www.cnblogs.com/jichi/p/12500695.html
答:(1)修饰非静态方法,实际上是对调用该方法的对象加锁,俗称”对象锁“;
(2)修饰静态方法,实际上是对该类对象加锁,俗称”类锁“。
24、Thread.yield()作用?使线程进入哪个状态?
https://blog.csdn.net/Dongguabai/article/details/82217966
答:这个是个静态方法,一旦执行,它会使当前线程让出CPU,即由”运行状态“进入”就绪状态“。
25、简述LinkedHashMap
https://blog.csdn.net/xiaoyao2246/article/details/88836769
26、几种线程安全的List
https://blog.csdn.net/weixin_43157543/article/details/107410126
答:Vector、Collections.synchroniezedList、CopyOnWriteArrayList。
(三)Android题
1、谈谈Activity的四种启动模式,SingleTop和SingleTask启动模式的应用场景
https://blog.csdn.net/iteye_7884/article/details/82133973
答:(1)standard
(2)singleTop
(3)singleTask
(4)singleInstance
2、图片的三级缓存是怎么做的?
https://blog.csdn.net/qq_33565218/article/details/98970980
3、Service的两种启动方式以及有什么区别
https://blog.csdn.net/Jsagacity/article/details/80523912?utm_source=blogxgwz6
4、如何在Activity和Service进行通信
https://blog.csdn.net/weixin_41101173/article/details/79718718
5、谈谈本地广播
https://blog.csdn.net/yuncaidaishu/article/details/86564590
6、binder机制
https://blog.csdn.net/augfun/article/details/82343249
https://www.cnblogs.com/manmanlu/p/7216281.html
7、Handler消息机制,子线程可以创建handler吗
https://blog.csdn.net/bboyfeiyu/article/details/38555547
https://blog.csdn.net/singwhatiwanna/article/details/17361775
https://blog.csdn.net/vv765947965/article/details/100888035 子线程可以创建handler
8、View的绘制流程,MeasureSpec(MS)知道吗?如何确定一个View的MS?那DecorView呢?
https://juejin.im/post/5e17e4726fb9a030176e6352
https://www.cnblogs.com/Mr-East/p/11530645.html
9、OkHttp的源码讲解,它涉及哪些设计模式
https://blog.csdn.net/u012881042/article/details/79759203
https://blog.csdn.net/json_it/article/details/78404010
10、内存泄露检测工具leakcanary的原理
https://blog.csdn.net/import_sadaharu/article/details/81407728
11、IntentService能用bind方式启动吗?IntentService的原理
https://www.cnblogs.com/ldq2016/p/8192230.html
https://blog.csdn.net/Landon_Xu/article/details/52170991 IntentService启动不支持bindService
答:
12、做过的安卓性能优化
https://blog.csdn.net/xiangzhihong8/article/details/92800490 性能优化
https://www.cnblogs.com/renhui/p/11761586.html 内存优化
13、MVP MVVM架构
https://www.jianshu.com/p/5e94569a430a
https://blog.csdn.net/IT1039871366/article/details/50673192
14、热修复、热更新问题
https://blog.csdn.net/u013928412/article/details/80428476
15、内存泄漏、内存抖动等问题处理
https://www.cnblogs.com/shen-hua/p/7233300.html
https://www.cnblogs.com/aademeng/articles/11069633.html
https://blog.csdn.net/huang_rong12/article/details/51628264 内存抖动导致的卡顿现象
16、 AsyncTask和Handler+Thread机制的区别
https://blog.csdn.net/crystal_xing/article/details/81662871
(四)算法题
1、反转链表
十、B站
(一)计算机基础、网路技术及操作系统等
1、TCP和UDP有什么区别?
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html 推荐
https://blog.csdn.net/qq_34671951/article/details/88857704
https://blog.csdn.net/striveb/article/details/84063712
https://blog.csdn.net/weixin_43884871/article/details/97967542
TCP | UDP | |
有无连接 | 面向连接 | 无连接 |
模式 | 面向字节流 | 面向报文 |
有无拥塞控制 | 有 | 无 |
通信关系 | 一对一 | 一对一,一对多,多对一,多对多 |
逻辑通信信道 | 全双工的可靠通信 | 不可靠信道 |
首部开销 | 20个字节 | 8字节 |
速度 | 慢 | 快 |
2、HTTP/HTTPS ,HTTP的断点传续
https://blog.csdn.net/tianzhaoai/article/details/56673071
https://blog.csdn.net/cbjcry/article/details/84925073
3、文件下载相关:下载大文件如何多线程提高速度?
https://blog.csdn.net/tianzhaoai/article/details/56673071
4、怎么优化服务器传输速度?
答:开放性回答。
(1)API
(2)带宽
(3)分布式
(二)Java题
1、多态,有哪些实现?
https://blog.csdn.net/github_37130188/article/details/89931885
https://www.cnblogs.com/javastack/p/12765157.html
答:Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实现对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。三个特点:(1)继承(2)重写(3)父类引用变量指向子类的实例对象。
2、volatile作用,单例模式中双重锁判断的两次判断的作用?
https://blog.csdn.net/xiaobao5214/article/details/88172375
https://blog.csdn.net/weixin_38983929/article/details/103006376 两次判断的作用
3、JVM内存分配
https://www.cnblogs.com/gw811/archive/2012/10/18/2730117.html
https://blog.csdn.net/xinzhou201/article/details/81981282
(三)Android题
1、dalvik和hotspot虚拟机了解吗?
https://www.cnblogs.com/lxjshuju/p/7191910.html
https://blog.csdn.net/smartbetter/article/details/80561284 hotspot虚拟机
2、Android的注解了解过哪些
https://droidyue.com/blog/2016/08/14/android-annnotation/
(四)算法题
十一、华为
(一)计算机基础、网路技术及操作系统等
1、Socket和Http最大的区别是什么?
https://blog.csdn.net/wishfly/article/details/44369019
答:最大区别Socket是网路层,Http是应用层。
(二)Java/kotlin题
1、设计模式六原则
答:单一职责原则、依赖倒置原则、迪米特原则、接口隔离原则、开闭原则、里氏替换原则
2、 RuntimeException解决办法: 看日志
https://blog.csdn.net/qq_35069223/article/details/81175117
(三)Android题
1、子线程怎么使用Handler
https://blog.csdn.net/vv765947965/article/details/100888035
2、问网页连接怎么启动本地App
https://blog.csdn.net/u012721933/article/details/51241675
3、android四大组件Android四大基本组件分别是Activity、Service服务,Content Provider内容提供者、BroadcastReceiver广播接收器。
4、ANR(ActivityNot Respone)(无响应)先介绍下Main线程(也称为UI线程、主线程)
https://www.jianshu.com/p/388166988cef
https://blog.csdn.net/mysimplelove/article/details/93191748
5、FC(Force close)原因:1.Error OOM(out of memory error) StackOverFlowError
https://blog.csdn.net/ylyg050518/article/details/50727292
6、Camera硬件有哪些引脚
7、渲染管线主要有哪几个阶段
(四)算法题
十二、Shopee 虾皮
(一)计算机基础、网路技术及操作系统等
1、HTTP与HTTPS的区别、过程
https://blog.csdn.net/qq_40373699/article/details/106860829
https://blog.csdn.net/qq_35642036/article/details/82788421
2、数字证书CA原理
https://blog.csdn.net/u014023993/article/details/86735957
https://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html
3、TCP与UDP
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html 推荐
https://blog.csdn.net/qq_34671951/article/details/88857704
https://blog.csdn.net/striveb/article/details/84063712
https://blog.csdn.net/weixin_43884871/article/details/97967542
TCP | UDP | |
有无连接 | 面向连接 | 无连接 |
模式 | 面向字节流 | 面向报文 |
有无拥塞控制 | 有 | 无 |
通信关系 | 一对一 | 一对一,一对多,多对一,多对多 |
逻辑通信信道 | 全双工的可靠通信 | 不可靠信道 |
首部开销 | 20个字节 | 8字节 |
速度 | 慢 | 快 |
4、滑动窗口
https://www.cnblogs.com/hujinshui/p/10472671.html
https://www.cnblogs.com/shen-qian/p/12111666.html
5、TCP分片
https://blog.csdn.net/Wu000999/article/details/88886061
6、https的加密过程?
https://www.cnblogs.com/imteck4713/p/12016313.html
7、https使用了对称加密还是非对称加密?
https://www.cnblogs.com/imteck4713/p/12016313.html
答:(1)证书验证阶段使用非对称加密;
(2)数据传输阶段使用对称加密,原因:非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的。另外:在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。
8、使用https抓包了解吗?
https://www.cnblogs.com/imteck4713/p/12016313.html
9、https抓包可以抓到明文吗?
https://www.cnblogs.com/imteck4713/p/12016313.html
10、网络中的四元组了解吗?
答:(1)四元组:源IP地址、目的IP地址、源端口、目的端口
(2)五元组:源IP地址、目的IP地址、协议号、源端口、目的端口
(3)七元组:源IP地址、目的IP地址、协议号、源端口、目的端口,服务类型以及接口索引
11、网络安全中的中间人攻击了解吗?
https://juejin.im/post/5f1072eb6fb9a07e6d70c445
https://baike.baidu.com/item/%E4%B8%AD%E9%97%B4%E4%BA%BA%E6%94%BB%E5%87%BB/1739730?fr=aladdin
(二)Java/Kotlin题
1、Java集合了解吗,区别是什么?
https://blog.csdn.net/feiyanaffection/article/details/81394745
2、重写equals就必须重写hashcode吗?
https://blog.csdn.net/qq_35868412/article/details/89380409
答:(1)使用hashcode方法提前校验,可以避免每一次比对都调用equals方法,提高效率
(2)保证是同一个对象,如果重写了equals方法,而没有重写hashcode方法,会出现equals相等的对象,hashcode不相等的情况,重写hashcode方法就是为了避免这种情况的出现。
3、Set怎么判断数据不能重复?
https://www.cnblogs.com/kingofjava/p/10761657.html
4、hashmap的数学原理?底层实现?扩容原理?
https://juejin.im/post/5e8d81d7f265da47f318acc6#heading-5
https://juejin.im/post/5d09f2d56fb9a07ec7551fb0#heading-9
5、反射了解吗?怎么实现的?
https://blog.csdn.net/sinat_38259539/article/details/71799078
6、Java中如何实现同步?
https://www.cnblogs.com/XHJT/p/3897440.html
7、volatile保证了什么特性?怎么保证有序性?怎么保证可见性?为什么不能保证原子性?
https://blog.csdn.net/sxfquqion/article/details/91411790
https://baijiahao.baidu.com/s?id=1663045221235771554&wfr=spider&for=pc
答:(1)保证不同线程对这个变量进行操作的可见性,
(2j禁止指令进行重排序。(保证有序性)
8、synchronized的底层实现?synchronized怎么保证原子性的?如何保证同步性?
https://cloud.tencent.com/developer/article/1465413
9、Java中的多态是怎么理解的?
https://blog.csdn.net/github_37130188/article/details/89931885
https://www.cnblogs.com/javastack/p/12765157.html
答:Java多态的实现机制是父类或接口定义的引用变量可以指向子类或实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实现对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。三个特点:(1)继承(2)重写(3)父类引用变量指向子类的实例对象。
10、Java泛型了解吗?
https://www.jianshu.com/p/986f732ed2f1 java泛型
(三)Android题
1、从一个activityA跳转到activityB,A,B的生命周期是怎么样的?是A的onpause先运行还是B的oncreate先运行?为什么?
答:A:onPaused();B:onCreate()->onStart()->onResume();A->onStop(); Standard模式情况。
2、Fragment了解吗?
https://blog.csdn.net/u013738122/article/details/80510366
3、Android中的广播机制了解吗?
https://www.cnblogs.com/aademeng/articles/11025425.html
https://blog.csdn.net/huiblog/article/details/53234544
4、BroadcastReceiver的静态广播和动态广播的区别?
https://www.cnblogs.com/aademeng/articles/11025425.html
https://blog.csdn.net/huiblog/article/details/53234544
5、自定义实现过Android中的广播吗?
答:有。监听应用安装、微信/支付宝Hook插件开发进程间通信等。
6、activity怎么向fragment传递数据?通过bundle?为什么要通过bundle?在fragment中定义一个类可以传递吗?
https://blog.csdn.net/qq_27853161/article/details/56670460
7、自定义布局出现过什么问题吗?
https://blog.csdn.net/xmxkf/article/details/51500304
(四)算法题
十、其它
(一)计算机基础、网路技术及操作系统等
1、Http是在哪一层,Https使用了非对称加密还是对称加密?TCP和UDP的区别,为什么UDP不可靠还要使用UDP。(富途网)
答:HTTP是在应用层。HTTPS在验证阶段使用是非对称加密,在数据传输阶段使用的是对称加密。
https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html 推荐
https://blog.csdn.net/qq_34671951/article/details/88857704
https://blog.csdn.net/striveb/article/details/84063712
https://blog.csdn.net/weixin_43884871/article/details/97967542
TCP | UDP | |
有无连接 | 面向连接 | 无连接 |
模式 | 面向字节流 | 面向报文 |
有无拥塞控制 | 有 | 无 |
通信关系 | 一对一 | 一对一,一对多,多对一,多对多 |
逻辑通信信道 | 全双工的可靠通信 | 不可靠信道 |
首部开销 | 20个字节 | 8字节 |
速度 | 慢 | 快 |
2、TCP会检查包的顺序么,Tcp怎么控制包的发送(滑动窗口)。(富途网)
https://blog.csdn.net/dccmxj/article/details/52103800
答:TCP会检查包的顺序。
3、看到项目中使用了WebSocket,讲下它和Http的区别?(富途网)
https://blog.csdn.net/SL_ideas/article/details/73648378
https://segmentfault.com/a/1190000015122195
4、Socket心跳包
https://www.jianshu.com/p/ec3fadada9d7
(二)Java/Kotlin题
1、线程安全的集合有哪些?
https://blog.csdn.net/lixiaobuaa/article/details/79689338
答:(1)Vector
(2)HashTable
(3)ConcurrentHashMap
(4)CopyOnWriteArrayList和CopyOnWriteArraySet
2、Exception和Error的区别,他们的父类是什么?
https://blog.csdn.net/vv19910825/article/details/93326676
答:都继承自Throwalbe类。
3、 finally和return的顺序
https://blog.csdn.net/kavensu/article/details/8067850
4、如果有A,B,C,D,E五个步骤,每个步骤都需要操作对应请求,用哪种设计模式(Insta360 )
https://blog.csdn.net/u011897062/article/details/89457070 责任链模式
(三)Android题
1、蓝牙AP协议(爱奇艺),蓝牙模块框架(联想研究院)
https://blog.csdn.net/u010356768/article/details/91493622
2、Android启动流程(联想研究院)
https://www.jianshu.com/p/910df9643d8c
https://www.kancloud.cn/digest/androidframeworks/127782
3、LinearLayout weight 是如何计算(浦发银行)
https://blog.csdn.net/ddiididi/article/details/80954084
答:(1)measure()->onMeasure() 根据 mOritation 调用measureVertical()或measureHorizaontal()方法;
(2)先measure没有设置weight属性的View(weight>0),再mearsue设置过weight属性的view(将父视图剩余的高度/宽度按照weight值的大小平均分配给相应的子视图)。
4、问安卓listview控件的橡皮筋效果是如何实现的?(富途网)
https://blog.csdn.net/smile_Running/article/details/81128438
5、onSaveInstance()的使用场景?(富途网)
https://blog.csdn.net/hzy199772/article/details/53229893
答:Activity回收时临时数据的存储。
6、 问mat如何分析内存?(软通动力)
https://blog.csdn.net/pxq10422/article/details/105310369
7、嵌套滑动冲突如何解决?(北京图为先)
https://blog.csdn.net/qq_38998213/article/details/105054219
8、组件化及Arouter原理
https://blog.csdn.net/ceovip/article/details/88922528 组件化
https://blog.csdn.net/rentee/article/details/88596659 Arouter原理
9、fileprovider和Contentprovider区别
https://blog.csdn.net/xx326664162/article/details/78298956
10、APK体积优化
https://cloud.tencent.com/developer/article/1466431
11、屏幕适配
https://www.cnblogs.com/whycxb/p/9755012.html
12、llvm编译是如何优化代码的(绿网科技)
https://blog.csdn.net/yayaayaya123/article/details/83993041
13、dex是如何转为机器码的(绿网科技)
https://www.jianshu.com/p/a07bd632337a
14、Android主线程是怎么启动的(绿网科技}
https://www.cnblogs.com/mingfeng002/p/10323668.html
15、looper的唤醒是在Java还是Native层,怎么做到的(顺丰科技)
https://blog.csdn.net/abcd112358/article/details/105093994
答:在native层唤醒,就是向mWakeEventFd管道写数据就行。
16、如何提高海外用户的访问速度,假设服务器在深圳(顺丰科技)
https://www.33ol.com/news/1225.html
(四)算法题
.....完善中
标签:面试题,blog,2020,details,https,article,Android,csdn,net 来源: https://blog.csdn.net/u012451933/article/details/107333568
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。