跟着我一起通关Java面试吧(18)

48 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情

今日份的学习继续呀!

问题【1】bookstore中的编码是什么呢?

mysql中有四层编码,包括字段、表、数据库、系统四个层次,我以前遇到过很多这样的问题,很是恼,最后我用了最绝的一招就都搞定了,就是再重装或新装mysql的时候,在选择字符集的时候,不要默认为latin-1而是选择utf8就可以了,这样之后,就再没有中文乱码了,可以一试

问题【2】如何在Java 中实现多线程呢?

继承Thread类创建线程 Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。这种方式实现多线程很简单,通过自己的类直接extend Thread,并复写run()方法,就可以启动新线程并执行自己定义的run()方法。例如: 复制代码

public class MyThread extends Thread { public void run() { 

System.out.println("MyThread.run()"); 

} } 
MyThread myThread1 = new MyThread(); 

MyThread myThread2 = new MyThread(); 

myThread1.start(); 

myThread2.start();

问题【3】Ruby是用来学习的最好的编程语言吗?

Ruby常常被用来与Python的可读性进行比较,它提供类英语的语法,这让 Ruby 成为一个完美的候选者,最适合作为第一个编程语言来学习。

问题【4】在Java中,怎么判定对象已经“死去”? 常见的判定方法有两种:引用计数法和可达性分析算法,HotSpot中采用的是可达性分析算法。

引用计数法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。 客观地说,引用计数算法的实现简单,判定效率也很高,在大部分情况下它都是一个不错的算法,但是主流的Java虚拟机里面没有选用引用计数算法来管理内存,其中最主要的原因是它很难解决对象之间相互循环引用的问题。

可达性分析算法:这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。