一、Java
1.一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。
2.对象:对象是类的一个实例,有状态和行为。
3.类:类是一个模板,它描述一类对象的行为和状态。
4.方法:方法就是行为,一个类可以有很多方法。
5.实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
6.编写Java程序时,应注意以下几点:
- 大小写敏感
- 类名:每个单词的首字母应该大写
- 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
- 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。
- 主方法入口:所有的Java 程序由public static void main(String []args)方法开始执行。
- 在Java语言中,所有的变量在使用前必须声明
import java.io.*; //导入包
final double PI = 3.1415926; //final修饰常量
public class 类名{
成员/实例变量;
static 类变量;
public 返回类型 方法名(参数){
局部变量;
相关操作;
}
public static void main(string[] args){
类名 对象=new 类名(“对象值”);//创建对象
System.out.println(“12”+变量名+“34“); //输出语句
}
}
7.Char类型
(1)字符char ch = ‘a’;
(2)字符数组 char[] charArray={‘a’,’b’,’c’};
(3)创建对象char[] charArray = new char[];
(4)字符数组转字符串:toString()
8.String类型
(1)String类型不能改,String str = “hello world”;
(2)创建对象,String str = new String(charArray);
(3)字符串长度:str.length()
(4)字符串转字符数组:toCharArray()
(5)StringBuffer和StringBuilder:字符串可变,StringBuilder更快但线程不安全,用的多。
StringBuilder ss = new StringBuilder(“hello”); ss.append(“world”);//扩展
ss.replace(“world”,”word”);//替换
9.Array数组类型
(1)创建数组int[] array = new int[arraysize];array[0] = 1; array[1] = 2;
(2)创建数组并赋值 int[] array = {1,2,3,4,5};
(3)数组长度:array.length
(4)多维数组:String array[][] = new String[row][col];
10.输入Scanner
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
11.java虚拟机的内存如何划分的?类加载机制,类加载器,双亲委派模型?jvm调优做过没,-Xms和-Xmx分别指什么?堆,栈,永久区,GC?
答:主要划分为五个区域,方法区,本地方法栈,虚拟机栈,程序计数器,堆。大概就是这五个区域,一定要背下来。咱们的垃圾回收主要就是针对堆区来进行的,堆区又会被划分为新生代老年代
12.java的垃圾回收算法有哪些?垃圾回收器有哪些?不同的垃圾回收器有什么区别?对象什么时候进入老年代,什么时候进行FullGC?
答:垃圾回收算法有标记复制法,标记清除法 等。垃圾回收器最常被问的就是CMS和G1。scavage之类的回收器基本上不问。CMS在不同阶段使用串行或并发来做垃圾回收的,而且他和G1垃圾回收器有什么区别。
13.voliatile和synchonized有什么区别?synchonized和jdk提供的Lock包又有什么区别?volatile怎么保证可见性?synchronized和lock的区别,synchronized的底层实现?
synchronized和reentrantlock的区别。讲讲阻塞队列,volatile和synchronized为啥是非公平的
答:voliatile只能够保证可见性和有序性,不能保证原子性,synchonized是通过上锁来防治出现并发问题。jdk提供的Lock包相比于synchozied提供了更加多样化的锁机制。
14.HashMap的原理是什么?HashMap和HashTable的区别,HashMap怎么解决hash冲突,jdk1.8后对HashMap的改进?
hashmap也是一个被问烂的问题,但是我这里进行一些拓展。基本上面试官最常问的就是hashmap是如何实现的,这个网上一查就知道了。但是一些深入一点的东西,如果你能够讲的话,是会有加分的。例如hashmap如何实现动态扩容,hashmap并不是线程安全的,在哪些情况下会出现线程安全的问题?那么哪一