前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试问题

面试问题

原创
作者头像
大学里的混子
修改2019-03-05 14:53:48
6220
修改2019-03-05 14:53:48
举报
文章被收录于专栏:LeetCode

1、 类加载的三种方式

1:命令行启动应用时由JVM初始化加载

2:通过Class.forName() 方式动态加载

3:通过ClassLoder.loadClass() 方法动态加载

2、获取Class对象的三种方式

1.1 Object ——> getClass(); 1.2 任何数据类型(包括基本数据类型)都有一个“静态”的class属性 1.3 通过Class类的静态方法:forName(String  className)(常用)

代码语言:javascript
复制
  Student stu1 = new Student();//这一new 产生一个Student对象,一个Class对象。 
        Class stuClass = stu1.getClass();//获取Class对象 
        System.out.println(stuClass.getName());  
 //第二种方式获取Class对象 
        Class stuClass2 = Student.class;  
        System.out.println(stuClass == stuClass2);//判断第一种方式获取的Class对象和第二种方式获取的是否是同一个 
 //第三种方式获取Class对象 
 try {  
            Class stuClass3 = Class.forName(”fanshe.Student”);//注意此字符串必须是真实路径,就是带包名的类路径,包名.类名 
            System.out.println(stuClass3 == stuClass2);//判断三种方式是否获取的是同一个Class对象 
        } catch (ClassNotFoundException e) {  
            e.printStackTrace();  
        }  

JAVA反射机制

是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制

3 如何判断对象已死

(1:引用计数法(java中没用,因为,没办法解决循环引用:A引用B,B也引用A,但是没有其他引用去引用A和B,这时AB都是垃圾,但是引用计数法无法判断)。2:可达性分析算法:通过GC Roots为起始点向下搜索,说白了就是通过你已知的活对象,去找这对象里的引用,再找引用对象里的引用,一直这样下去,找的到的就是活的。那么哪些对象可以作为GC Roots呢:1虚拟机栈中引用的对象。2方法区静态属性引用的对象。3方法区中常量引用的对象。4本地方法栈中JNI(一般说的是Native方法)引用的对象)

4 常见的垃圾回收算法(1标记清除:通过可达性分析算法标记好活对象,然后清除掉没标记得对象,有个缺点:空间很零碎所以有了标记整理算法。2复制算法:同样是可达性分析后,活对象呢就直接复制到一片新内存中,之前的内存中所有对象直接清除,优点是没有零碎空间产生,但是消耗了很大内存。3标记整理算法:先标记清除再整理。4分代算法:这里分代是将堆里的对象进行分代,比如蚂蚁爷爷属于老年代,刚出生的蚂蚁孩子属于新生代等,分完代后呢 其实没有自己的算法,用的都是前面说的算法,但是分代特点是:不同的代,用合适自己的算法 比如:新生代很多对象都是很快消亡所以用复制算法,老年代里的对象都是存活率高的用:标记清除或标记整理)

5 JVM常见的命令工具包括jps用于查询正在运行的JVM进程。 jstat可以实现显示本地或远程JVM进程中类加载、内存、垃圾回收、JIT编译等数据。 jinfo用于查询当前运行着的JVM属性和参数的值。 jmap用于显示当前堆永久代的详细信息。 jhat 用于分析使用jmap生成的dump文件,是JDK自带的。 jstack用于生成当前线程的所有快照,用于定位线程长时间出现停顿的原因)

6 重写equals方法要遵循哪些通用的约定自反性:x.equals(x)要成立。对称性:x.equals(y) 和y.equals(x)要成立。传递性:x、y、z x.equals(y) 和y.equals(z)成立 那x.equals(z)要成立。一致性:说白点就是只要进行equals的对象不变,那么结果就一直不能变。非空性:对于任意非空引用x,x.equals(null)应该返回false)

7 关键字transient(简单地说,就是让某些被修饰的成员属性变量不被序列化。transient不能修饰类和方法,被transient关键字修饰的变量不能被序列化,一个静态变量不管是否被transient修饰均不能被序列化。)

8 redis的持久化方式中 RDB方式优缺点(RDB:是指用数据集快照的方式记录redis数据库的所有键值对 优点:1.只有一个文件 dump.rdb 方便持久化。2.容灾性好,一个文件可以保存到安全磁盘。3.性能最化,fork子进程来完成写操作,让主进程继续处理命令。4.相对于数据集大时,比AOF启动效率高。缺点:数据安全性较低)

9 redis的持久化方式中AOF方式优缺点(AOF:是指所有的命令行记录以redis,命令请求协议的格式保存为aof文件 优点:数据安全,通过append模式写文件,即使中途服务器宕机可以通过redis-check-aof工具解决数据一致性问题。3AOF机制的rewrite模式。缺点:1文件比RDB形式文件大。2数据集大比RDB启动效率低)

10 讲解一下HTTP请求里的Header有什么作用(accept:浏览器端可以接受的媒体类型。Accept-Encoding: 浏览器申明自己接收的编码方法。Accept-Language:浏览器申明自己接收的语言。Connection:连接状态,close 的话就要新开连接。Host:请求报头域主要用于指定被请求资源的Internet主机和端口号。User-Agent:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。)

11 linux中grep的使用(用于过滤/搜索的特定字符、如:grep "qqq\|aaa" abc.txt 是把qqq和aaa从abc.txt中筛选出来,grep "q" abc.txt 把小q筛选出来 ,如grep -i "q" abc.txt这样就不区分大小写了 ,还有很多参数以及正则表达式,不太明白的童鞋百度哦)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、 类加载的三种方式
  • 2、获取Class对象的三种方式
    • 1.1 Object ——> getClass(); 1.2 任何数据类型(包括基本数据类型)都有一个“静态”的class属性 1.3 通过Class类的静态方法:forName(String  className)(常用)
    • JAVA反射机制
    • 3 如何判断对象已死
    相关产品与服务
    云数据库 Redis
    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档