ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2020年Android最新面试题大全(收录了字节跳动、腾讯、百度、阿里巴巴、华为等十几家一线大厂题)

2020-11-30 18:01:11  阅读:2746  来源: 互联网

标签:面试题 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发布的一个跨平台序列化框架具有如下特点。

  1. 可不需要解析、拆包,而直接访问序列化后的数据;
  2. 内存利用率高以及读取速度快;
  3. 灵活性;
  4. 生成代码量小;
  5. 强类型;
  6. 使用方便;
  7. 代码跨平台无其他依赖

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://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E7%9B%AE%E5%BD%95.md

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的区别
 TCPUDP
有无连接面向连接无连接
模式面向字节流面向报文
有无拥塞控制
通信关系一对一一对一,一对多,多对一,多对多
逻辑通信信道全双工的可靠通信不可靠信道
首部开销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的区别
 TCPUDP
有无连接面向连接无连接
模式面向字节流面向报文
有无拥塞控制
通信关系一对一一对一,一对多,多对一,多对多
逻辑通信信道全双工的可靠通信不可靠信道
首部开销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的加载流程是怎么样的,生命周期是怎么样的

https://shuwoom.com/?p=351

(三)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、数据库,如何进行数据库迁移?

http://ddrv.cn/a/224611

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的区别
 TCPUDP
有无连接面向连接无连接
模式面向字节流面向报文
有无拥塞控制
通信关系一对一一对一,一对多,多对一,多对多
逻辑通信信道全双工的可靠通信不可靠信道
首部开销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的区别
 TCPUDP
有无连接面向连接无连接
模式面向字节流面向报文
有无拥塞控制
通信关系一对一一对一,一对多,多对一,多对多
逻辑通信信道全双工的可靠通信不可靠信道
首部开销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的区别
 TCPUDP
有无连接面向连接无连接
模式面向字节流面向报文
有无拥塞控制
通信关系一对一一对一,一对多,多对一,多对多
逻辑通信信道全双工的可靠通信不可靠信道
首部开销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的区别
 TCPUDP
有无连接面向连接无连接
模式面向字节流面向报文
有无拥塞控制
通信关系一对一一对一,一对多,多对一,多对多
逻辑通信信道全双工的可靠通信不可靠信道
首部开销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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有