
面试之旅
文章平均质量分 82
记录找Android实习的面试准备。包括Java、Java虚拟机、Android、计算机网络和操作系统等内容。
SweetWiner
这个作者很懒,什么都没留下…
展开
-
面试-设计模式(全)
设计模式一、设计模式六大原则单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。开放封闭原则:类、模块、函数等应该是可以拓展的,但是不可修改。里氏替换原则:所有引用基类(父类)的地方必须能透明地使用其子类的对象。尽量把父类设计为抽象类或者接口,让子类继承父类或实现父接口,并实现在父类中声明的方法。运行时,子类实例替换父类实例,我们可以很方便地扩展系统的功能,同时无须修改原有子类的代码增加新的功能可以通过增加一个新的子类来实现里氏替换原则是开放封闭原则的具体实现手段之一依赖倒置原创 2021-08-08 21:56:18 · 897 阅读 · 0 评论 -
面试题解---计算机网络(全)
计算机网络(1)TCP、UDP区别以及用处TCP VS UDPTCP 的可靠性含义: 接收方收到的数据是完整, 有序, 无差错的。UDP 不可靠性含义: 接收方接收到的数据可能存在部分丢失, 顺序也不一定能保证。TCPUDP面向连接无连接提供可靠服务“Best effort”服务,UDP传输的数据可能会丢失,非按序到达面向字节流,TCP把数据看成一连串无结构的字节流面向报文TCP连接是一对一的:一个发送方,一个接收方UDP支持一对一,一对多,多原创 2021-08-08 21:55:32 · 2710 阅读 · 0 评论 -
面试题解--操作系统(全)
操作系统(1)进程和线程的区别进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程**根本区别:**进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。( 线程是可由CPU直接运行的实体)内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。**开销:**CPU切换一个线程比切换进程开销小,创建一个线程比进程开原创 2021-08-08 21:54:48 · 1883 阅读 · 0 评论 -
面试题解--Java(全)
Java线程不安全的线程安全的StringBuilderStringBufferArrayListVectorHashMapHashtable基本数据类型字符型:char布尔型:Boolean数值型:整数类型:byte(1字节), short(2字节), int(4字节), long(8字节)浮点型:float(4字节), double(8字节)byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。short:16位,原创 2021-08-08 21:54:09 · 2160 阅读 · 0 评论 -
深入理解Java虚拟机(全)
垃圾回收,类加载,线程安全问的比较多2,3,6,7,12,13第二章 Java内存区域与内存溢出异常2.2 运行时数据区域3个区域线程私有(不需要垃圾回收,因为它们随着线程结束而自动销毁),2个区域所有线程共享(需要垃圾收集回收)程序计数器(Programmer Counter Register):一块很小的内存,可以看做当前线程所执行的字节码的行号计数器。线程隔离的数据区(线程私有)为了多线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各线程之间计数原创 2021-08-08 21:52:36 · 1789 阅读 · 0 评论 -
Android面试题解(全)
Android(一)RecyclerView 与 ListView 的主要区别:使用布局效果局部刷新嵌套滚动机制布局效果对比常用功能和API对比RecyclerView 和 ListView 在 Android L 引入嵌套滚动机制之后的对比(1)简单使用ListView:继承重写BaseAdapter类自定义 ViewHolder 和 convertView 一起完成复用优化工作(在自定义的ADP、adapter中完成)RecyclerView:继承重写Rec原创 2021-08-08 21:50:38 · 417 阅读 · 0 评论 -
synchronized用法(二):synchronized的底层实现原理
synchronized底层实现在Java里面,最基本的互斥同步手段是synchronized(1)原理synchronized关键字经过反编译之后,会在同步块的前后分别形成 monitorenter和monitorexit这两个字节码指令。这两个字节码指令都需要一个reference类型的参数来指明要锁定和解锁的对象。其中monitorenter指令指向同步代码块的开始位置,monitorexit指令则指明同步代码块的结束位置。当代码执行到monitorenter 指令时,将会尝试获取该对象对应原创 2021-05-31 22:39:53 · 190 阅读 · 0 评论 -
synchronized用法(一):synchronized的使用
synchronized的用法三种用法:修饰实例方法修饰静态方法修饰代码块synchronized的作用:原子性:synchronized保证语句块内操作是原子的可见性:synchronized保证可见性(通过“在执行unlock之前,必须先把此变量同步回主内存”实现)有序性:synchronized保证有序性(通过“一个变量在同一时刻只允许一条线程对其进行lock操作”)一、3种用法synchronized是Java中的关键字,是一种同步锁。修饰一个类:其作用的范围是s原创 2021-05-31 22:34:24 · 899 阅读 · 0 评论 -
Java中static的用法
static的用法static关键字涉及很多Java虚拟机相关内容,感兴趣的读者可以看看Java虚拟机相关内容哦!方便在没有创建对象的情况下来进行调用(方法/变量)。static:静态的,用于修饰成员(成员变量,成员方法);被static所修饰的变量或者方法会储存在数据共享区(静态存储区);被static修饰后的类成员变量只有一份!当成员被static修饰之后,就多了一种访问方式,除了可以被对象调用之外,还可以直接被类名调用,(类名.静态成员);使用:(一定要提到类加载)原创 2021-05-29 16:28:33 · 2914 阅读 · 0 评论 -
Java单例模式
单例模式定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点单例模式总共有5种实现饿汉模式懒汉模式DCL(双重检查模式)----很重要静态内部类单例模式枚举类单例(1)饿汉模式public class Singleton{ private static Singleton instance = new Singleton(); private Singleton(){ } public static Singleto原创 2021-05-29 16:22:27 · 71 阅读 · 0 评论 -
Java四种访问修饰符
Java四种访问修饰符public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不 仅可以跨类访问,而且允许跨包(package)访问。private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以 及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。protected: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、 属性以及方法原创 2021-05-29 16:13:09 · 542 阅读 · 0 评论 -
深入理解Java虚拟机(四):Java内存模型
Java内存模型一、概述二、硬件的效率与一致性计算机的存储设备与处理器的运算速度有着几个数量级的差距现代计算机系统都不得不加入一层或多层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲基于高速缓存的存储交互很好地解决了处理器与内存速度之间的矛盾,但是也为计算机系统带来更高的复杂度,它引入了一个新的问题:缓存一致性(Cache Coherence)。多路处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存(Main Memory),这种系统称为共享原创 2021-05-29 16:06:39 · 130 阅读 · 0 评论 -
深入理解Java虚拟机(三):Java类加载过程
Java类加载一、概述虚拟机的类加载机制:Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制与那些在编译时需要进行连接的语言不同在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的Java天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的二、类加载时机类的生命周期(从被加载到虚拟机内存开始,到卸载出为止):加载(Loading)原创 2021-05-29 15:20:24 · 277 阅读 · 0 评论 -
深入理解Java虚拟机(二):Java内存回收及垃圾收集算法
Java内存回收 & 垃圾收集算法 & 垃圾收集器Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。本文重点:2 对象已死?(如何判断对象是否存活(回收已死亡的对象))3 垃圾收集算法5 垃圾收集器1 概述垃圾收集器(Garbage Collection, GC)程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每个栈帧中分配多少内原创 2021-05-29 14:51:11 · 302 阅读 · 0 评论 -
深入理解Java虚拟机(一):Java内存区域(运行时数据区域)
Java内存区域(运行时数据区域)主要参考书籍《深入理解Java虚拟机》运行时数据区域3个区域线程私有(不需要垃圾回收,因为它们随着线程结束而自动销毁),2个区域所有线程共享(需要垃圾收集回收)程序计数器(Programmer Counter Register):一块很小的内存,可以看做当前线程所执行的字节码的行号计数器。线程隔离的数据区(线程私有)为了多线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各线程之间计数器互不影响,独立存储如果线程正在执行一个Ja原创 2021-05-29 14:29:48 · 171 阅读 · 0 评论