java面试小问题
文章平均质量分 50
一些java中遇到的面试小问题总结。
lidongxiu0714
https://github.com/hpuzzuldx/
展开
-
JVM学习之运行时数据区
深入理解jvm看过很多遍,每次遇到问题总是要去翻书,今天开始把知识点记录在博文中,网上的JVM教程多如牛毛,我在此处只做记录用。以下总结内容来自-----《深入理解Java虚拟机_JVM高级特性与最佳实践》java能够实现跨平台特性依靠java虚拟机和字节码文件,JVM利用垃圾回收算法实现内存的自动回收,简化了程序中内存的管理,使程序员摆脱了内存管理的束缚,但为了更好了编写高效程序,我们依然要...原创 2018-10-08 15:15:49 · 2946 阅读 · 0 评论 -
JVM学习之对象内存布局,对象头
本篇内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》,感谢作者。创建对象之后需要使用对象,java中除了对对象属性方法的调用以外还有加锁实现同步等其他操作,这里的锁加在了哪里,如何记录锁,如何对锁进行分类(有对象锁,class锁),垃圾回收机制中有关于GC的标记,知道当前对象分代的年龄,这些都需要我们去探寻对象具体的内存布局。1 对象的内存布局HotSpot虚拟机中对象存储......原创 2018-10-08 15:54:29 · 4902 阅读 · 1 评论 -
JVM学习之java线程安全&锁优化技术
以下blog内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》感谢作者。1 线程安全的概念 线程安全的概念在书中作者讨论了很多,但都是比较抽象的定义,我所理解的线程安全(主要是对共享数据的操作,保证代码操作的正确性,就是无论在单线程还是多线程操作下,代码得到的结果都是正确的)。2 java语言中的线程安全2.1不可变一个不可变的对象(类似final)一...原创 2018-10-09 10:45:25 · 2950 阅读 · 0 评论 -
java基础之泛型
1 泛型的概念&为什么需要泛型泛型泛化类型就是参数化类型,使原本固定的类型参数化,把类型的确定推迟到使用时才确定。为什么需要泛型:泛型的作用有两个:一是起到约束的作用,定义泛型之后传入其他类型参数编译期就会报错,不会等到使用时发生类型转换错误(ClassCastException)二是定义一次,多种类型都可以使用。泛型中使用较多的是集合。public stat...原创 2018-10-09 14:05:33 · 2765 阅读 · 0 评论 -
Collections.synchronizedCollection 同步方法 & 装饰模式
14年刚开始学习java时从简单的语法开始学习,当时还没有接触到synchronized和lock等同步方法,用的较多的就是集合Collections.synchronizedCollection进行同步的方案。上面的synchronizedXXX函数接收特定的Collection,将转换成包装类型的SynchronizedXXX类型。//SynchronizedList继承自Syn...原创 2018-10-09 15:30:10 · 7432 阅读 · 0 评论 -
设计模式学习之装饰模式
装饰模式(Decorator)又被称为包装模式,是继承的一种替代方案,继承对类的扩展是编译时就确定的,装饰模式可以对客户端透明的方式扩展对象功能,扩展是动态的比继承更具灵活性。 举个例子就拿程序员平时爱喝的咖啡作为例子吧,很多人爱喝咖啡,有人喜欢加糖的,有人喜欢加奶的,有人喜欢加菊花的,也有人喜欢加芥末的。现在有个咖啡店如果利用继承来实现需要有个咖啡基类,然后继承后生成加糖的子类,...原创 2018-10-09 16:45:37 · 385 阅读 · 0 评论 -
java集合框架介绍
java集合框架:1.Java结合框架的总体结构说明:集合框架是为表示和操作集合而制定的统一的标准,主要包括三大部分:对外的接口,接口的是实现和对集合的运算。简单地说,编程过程中会涉及对一类数据的处理,这类数据用统一的数据结构表示,为能统一的存放、规范的操作就定了存放、操作的结构规范,类似数组。其实在Java2之前sun就提供了集合操作,更准确的叫法应该是容器,比如Vector,Stac...原创 2017-03-14 19:37:59 · 3801 阅读 · 0 评论 -
Java 集合SortedSet&SortedMap讲解
把每天重复的工作做好,把每次遇到的困难解决。这次对java集合框架学习中的两个特殊的接口进行介绍:SortedSet和SortedMap,这两个接口提供排序操作,实现他们的子类都具有接口中定义的功能。Set和Map本身不具备排序功能,提供了SortedMap和SortedSet接口之后可以在提供排序方案的同时,增加更多的获取集合特定位置元素的方法。类似:结合的第一个元素,最后一个元素,位于...原创 2017-03-15 19:24:01 · 22234 阅读 · 3 评论 -
Java集合之NavigableMap与NavigableSet接口
author:lidx 本文接着上篇介绍SortedMap和SortedSet接口,介绍他们的扩展接口NavigableMap与NavigableSet接口,提供了针对给定搜索目标返回最接近匹配项的导航方法。SortedMap和SortedSet接口两个接口jdk1.2就已经提供,扩展的NavigableMap与NavigableSet接口jdk1.6才开始支持。1....原创 2017-03-15 19:57:23 · 26127 阅读 · 3 评论 -
java基础之多态性
面向对象语言的三大特性:封装、继承、多态。下面简单讲解java这三大对象的概念:封装:java中通过定义类,把属性,方法封装进类中,通过类只有希望用户访问的功能用户才能调用。继承:java中通过子类继承父类,子类可以继承父类功能。多态:java中父类指向子类,通过动态绑定父类实例可以调用子类重写父类的功能。刚上大学自学C++时讲述面向对象特征时就会列举这三个概念,java语言也不例...原创 2018-10-08 10:53:21 · 2818 阅读 · 0 评论 -
java基本类型和包装类型
java是面向对象的语言为什么还要有基本类型,只有包装类型完全面向对象不行吗?java语言可以只有基本类型吗,为什么还有要包装类型?java中的基本类型和包装类型: 基本类型 包装器类型 boolean Boolean char Character int Integer byte Byte short Short...原创 2018-10-08 11:20:21 · 3337 阅读 · 0 评论 -
Messenger和aidl的关系&aidl支持多线程吗,messenger呢
1 Messenger封装了Aidl,使用时不用再写aidl,其实是源码中已经写好了aidl:IMessenger.aidl.package android.os; import android.os.Message; /** @hide */ oneway interface IMessenger { void send(in Message msg); ...原创 2018-09-26 15:33:34 · 3555 阅读 · 0 评论 -
AndroidManifest.xml文件何时被加载?如何查看apk的AndroidManifest
1 何时被加载首先分析一波,四大组件需要在AndroidManifest文件中配置否则无法使用,类似Activity无法启动,Activity可以被其他应用利用全类名或者action启动,就算此时要启动activity的应用没有被启动呢,所以AndroidManifest在系统启动时或者应用安装完毕后已经被系统加载。从系统代码级别解释就是系统启动过程中PMS会扫描特定目录下的apk...原创 2018-09-26 16:07:10 · 5828 阅读 · 0 评论 -
一个线程多个handler会有多少个looper,looper如何区分handler,会不会导致消息错乱。
面试题:问题1:一个线程中初始化多个handler,会产生多少个looper?问题2:如果只有一个looper,looper如何区分handler,handler发送了消息会不会导致Looper错乱,最终不知道谁处理。1 一个线程中初始化多个handler,会产生多少个looper分析一下:做过android开发的都知道Handler是android的消息机制,在主线程可以直接使用...原创 2018-09-29 17:40:08 · 10377 阅读 · 0 评论 -
抽象类和接口区别
抽象类:一个类被abstract关键字修饰就是抽象类。定义很简短,可能会有很多朋友质疑,《java编程思想》中说含有抽象方法的类就是抽象类,我试了下只要用abstract修饰的都是抽象类,就算里面不含有抽象方法,语法层面也是正确的。下面所有关于抽象类的总结都是基于抽象类含有抽象方法。下面说一下抽象类的特点:(1)抽象类由于含有抽象方法(未实现)所以无法实例化,需要被继承(2)继...原创 2018-09-28 17:54:30 · 2738 阅读 · 0 评论 -
java普通for循环和增强for循环中做集合增删会不会出错?
在遍及集合过程中对集合进行删除操作最好不要做,如果非要做可以利用迭代器,并发集合,或者同步代码。 单线程模式下直接使用迭代器提供的remove方法就行或者首先记录下标遍历完后进行删除,多线程模式下建议使用同步或并发结合。1 面试遇到的问题和迭代器没关系考察的是普通的for循环和foreach循环下面先说出观点: 普通for循环遍历集合过程中进行...原创 2018-09-27 11:01:10 · 5467 阅读 · 0 评论 -
如何判断一个对象是否可回收,GC回收对象的过程方式,finilized函数
面试问题:判断一个对象是否可用(存活,可回收),GC回收对象的过程方式,finilized函数了解吗,调用了finilized函数的对象一定会被回收吗,可以主动调用finilized函数吗?判断一个对象是否可用:根搜索算法(可达性分析),引用计数法(循环引用,js使用)JVM使用的根搜索算法(引自深入理解JVM):一个对象到GC Roots没有任何引用链相连,则该对象不可用,这...原创 2018-09-26 16:58:07 · 5976 阅读 · 0 评论 -
java集合之LinkedHashMap解析
LinkedHashMap 继承自HashMap,主要结构还是HashMap,添加了双向链表来保证插入顺序或者访问顺序。著名的LRUCache就是借助了LinkedHashMap的保持访问顺序的特性实现的。 //LinkedHashMap中保存的节点,比hashMap中的Node添加了before,after,node中还有next, //添加的两个节点的指针,组成了双向链表...原创 2018-09-26 14:58:51 · 2790 阅读 · 0 评论 -
Java集合-ArrayList源码分析及注意事项
这篇文章给大家带来ArrayList的学习,如果错误希望不吝指出,感谢!平台 jdk1.7,ubuntu 14.021 ArrayList介绍ArrayList是一个数组队列,容量可以动态变化,比java中的数组使用更加方便。ArrayList继承&实现结构图(查看ArrayList): 如图所示ArrayList直接继承自AbstractList,间接实现了L...原创 2017-03-17 11:12:12 · 3233 阅读 · 1 评论 -
android软键盘弹起面试题
软键盘弹起后遮挡布局有什么解决方案?1设置windowSoftInputMode 软键盘弹起时布局自动变化或许可以解决2监听根布局变化,获取软键盘高度,然后滚动或移动界面windowSoftInputMode中adjustResize和adjustPan什么区别?adjustResize会改变activity的高度,adjustPan会移动布局一个登陆界面,输入框和按钮,键盘弹...原创 2018-09-26 10:04:29 · 2985 阅读 · 0 评论 -
HashMap实现原理和扩容及高版本优化
HashMap的实现原理面试简单解答补充面试题:为什么hashcode和equals一般同时重写。hashmap如何判断出现了碰撞,然后存储在链表中。hash算法。这里不剖析源码只简单讲解:1原理简单解析数组结构HashMap内部结构为数组加链表方式,这里可以知道HashMap解决冲突的方法是链地址法,Node<K,V>[] table,Node节点里包...原创 2018-09-26 10:55:36 · 3141 阅读 · 0 评论 -
java访问修饰符面试相关
一道面试题:java访问修饰符分类?default private public protected 四种四种访问修饰符可以访问,不可以访问情况分析?访问控制分为四种级别: (1)public: 用public修饰的类、类属变量及方法,包内及包外的任何类均可以访问; (2)protected: 用protected修饰的类、类属变量及方法,包内的任何类及包外那些继承...原创 2018-09-25 15:04:57 · 3665 阅读 · 0 评论 -
java内部类为什么可以访问外部类属性方法
java内部类面试题:java内部类分类:成员内部类,局部内部类,静态内部类,匿名内部类静态内部类不能访问外部类的属性方法,所以android开发过程中可以优化handler其他内部类可以访问外部类,是因为持有外部类的引用。成员内部类说明:成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,默认情况下访问的是成员内部类的方法。访问外部类方法:外部类.this...原创 2018-09-25 16:21:18 · 13247 阅读 · 0 评论 -
StringBuilder StringBuffer 如何清空
StringBuilder StringBuffer面试题一般会问两者的区别和String的区别。StringBuffer线程安全的,StringBuild线程不安全的,String的区别是String每次改变都会生成一个新的String对象效率低,StringBuffer和StringBuild则不会生成新的对象。原理是:内部继承AbstractStringBuilder,利用数组进...原创 2018-09-25 16:35:40 · 10724 阅读 · 0 评论 -
java继承中的重写和隐藏
继承可以让子类获取父类非private以外的属性方法,这个过程中会发生重写,隐藏。多态的实现就是靠继承和类的向上转型,向下转型实现的。继承部分涉及到访问修饰符请看java访问修饰符,final private方法不能被继承,构造方法不能被继承,但是如果父类含有有参构造函数,子类必须用super调用。父类中的static方法可以被继承,但是不能重写。父类中的属性只能被隐藏不能被重写,子类重...原创 2018-09-25 15:36:42 · 3142 阅读 · 0 评论 -
android 一道关于dp,sp,px 的面试题
题目:android 开发中常用的尺寸单位是什么:dp sp pxdp 和px的区别,两个不同大小的屏幕dp和px的表现有什么区别dp与设备密度无关,dp不同尺寸屏幕显示效果不同,但是控件尺寸大小相同,所以最终结论是dp是具体的物理尺寸,与设备密度无关。px屏幕上的点,与密度相关,密度大了,单位面积上的px会比较多,px就显得比较小。设置160px在小屏幕上占据大...原创 2018-09-25 14:21:41 · 3090 阅读 · 0 评论 -
Android WebView滚动条不显示说明
WebView常用的地方是作为列表详情页展示,右侧滚动条可以很好的展示详情页刷到了哪个位置,还有多久才能到底。滚动条展示的简单设置:mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); mWebView.setVerticalScrollBarEnabled(true); mWebView.setHoriz...原创 2018-08-01 11:47:21 · 7950 阅读 · 0 评论 -
Android:HmacSHA1加密和文件转Base64String
因为比较简单,只做记录: /** * HmacSHA1 Encrypt. * @param encryptText : content to be encrypted. * @param encryptKey : secret key. * @return Encrypted bytes. **/ public static byte...原创 2018-08-28 16:18:18 · 3789 阅读 · 0 评论 -
Android本地广播和全局广播的区别及实现原理
迷茫时该如何选择?1.本地广播和全局广播1.1本地广播: 广播事件的发送和接收都在本应用,不影响其他应用也不受其他应用影响,只能被动态注册,不能静态注册,主要用法都在LocalBroadcastManager类中。1.2全局广播: 可以接收其他应用发的广播,也可以发送广播让其他应用接收,全局广播既可以动态注册,也可以静态注册,接受其他应用和系统广...原创 2018-09-05 10:56:18 · 10655 阅读 · 0 评论 -
Retrofit Get请求中带有特殊字符(^)报400错误
转眼又是一个月,回首已经过两年,唉。修改了密码之后登陆app,发现无法登陆直接报错,赶紧查看代码log:09-05 12:50:29.909 13653-13653/com.yiche.autoreport W/System.err: retrofit2.adapter.rxjava.HttpException: HTTP 400 at retrofit2.adapter...原创 2018-09-05 13:22:16 · 5520 阅读 · 0 评论 -
android&ios webView加载MarkDown 或者html代码片段
很多app详情页的新闻主体是html或者markdown片段,这里介绍一种简单的加载方式:利用marked.js(https://github.com/chjj/marked)和webView就可以实现片段加载。//bodyHtml 就是要加载的md或者html片段。private String getHtmlData(String bodyHTML) { Strin...原创 2018-09-06 14:24:25 · 4043 阅读 · 0 评论 -
java类加载机制详解
今天和大家探讨java虚拟机加载类的机制,jvm想执行.class文件第一步就是把class文件装载进内存。1.概述 引子:编程过程中,大家肯定遇到过java.lang.ClassNotFoundException错误,特别是当我们自定义类加载器进行类的加载或者利用java的反射机制获取Class对象时。 虚拟机整体架构的第一部分就是类装载器,Java类加载机...原创 2017-03-25 19:35:10 · 9560 阅读 · 3 评论 -
Android Jni GetMethodID中函数标识的简单解释
1 GetMethodID中函数标识的简单解释:Android 中Jni可以通过FindClass,GetMethodID, CallObjectMethod等可以实现对java中方法的调用。GetMethodID中最后一个参数的写法很特殊,Jni中GetMethodID的定义:jmethodID GetMethodID(jclass clazz, const char* nam...原创 2018-09-03 14:42:54 · 21648 阅读 · 4 评论 -
链表反转简单算法
链表反转java:public class Demo12 { public static void main(String[] args) { Node node1 = new Node(1, null); Node node2 = new Node(2, null); Node node3 = new Node(3, null); Node node4 = new No...原创 2018-09-05 17:09:45 · 856 阅读 · 0 评论 -
单向链表倒数第n项思路
算法很简单,只做记录用:倒数第n项的求法很简单,只需要两个相差n-1的链表指针一直向前走,当前面的指针的next为null时,后面走的慢的指针正好是倒数第n个。public static int findNode(Node node) { if (node == null || node.next == null) { return -1; } if (node.nex...原创 2018-09-07 16:22:00 · 2829 阅读 · 0 评论 -
java快速排序算法
快速排序算法写法很多种,这里介绍一种简单的://递归方式实现快速排序//算法思想每次排序会把小于锚点的数放在左边,大于锚点的数放在右边,//排完一轮就找到了锚点的正确位置,然后递归对锚点左侧,和右侧的数组//进行相同的规则排序public static void quicksort(int[] array, int start, int end) { int leftPos = ...原创 2018-09-07 16:33:22 · 4209 阅读 · 0 评论 -
android jsbridge实现原理简述
假如生活欺骗了你,假如工作到处不顺,请放松心态,提升自己,终有一天你会适应,然后。。。。。。。。。。。。。。。本篇是面试小问题专栏的开篇文章,由于是面试小问题的解答,所以所有的文章都会力求把问题说明白的同时精简字数,可能有理解不到位的地方后续会慢慢完善。h5可以作为移动端跨平台的一种方式,其他方式还有rnjs,flutter,weekx等,android或者ios为了实现和js的交互都提供...原创 2018-09-25 11:52:21 · 3917 阅读 · 0 评论 -
自动拆箱&自动装箱以及String 和基本数据类型封装类生成的对象是否相等
自动拆箱(unboxing)&自动装箱(boxing)@author 李东秀|| qq:1028659927本文主要为自己理解所做的学习笔记,如有不对的地方,望各位看官不吝指出,代码运行环境:Ubuntu 14.04,jdk1.7版本 在jdk 1.5之前,如果你想要定义一个value为100的Integer对象,则需要如下定义: Int原创 2017-03-12 13:14:53 · 6886 阅读 · 2 评论 -
java中函数参数传值还是传地址
今天和大家探讨个简单的小问题大笑Java中函数参数是传值还是传地址 刚接触C语言时有一道题困惑了我好久,就是交换两个数的值,本来以为相当简单,只要把要交换的a,b传进去,在函数里面利用一个中间变量就可以完成参数的交换,但如何修改程序都不行,大家不要笑,曾记否刚开始学习是对于a=b和形参实参我就迷惑了好久,好久-^^-。很明显下面的程序无法完成交换。#include<std...原创 2017-03-19 23:01:19 · 10220 阅读 · 0 评论 -
Android属性动画和视图动画的区别
动画入门和进阶文章列表:[Animation动画概述和执行原理][Android动画之补间动画TweenAnimation][Android动画之逐帧动画FrameAnimation][Android动画之插值器简介和系统默认插值器][Android动画之插值器Interpolator自定义][Android动画之视图动画的缺点和属性动画的引入][Android动画之ValueAnimator...原创 2017-04-16 11:36:53 · 5669 阅读 · 0 评论