操作系统面试考点 1、明白并发和并行的区别对理解操作系统很重要 并发:指两个或多个事件在同一时间间隔内发生 并行: 指两个或多个事件在同一时刻发生 操作系统中的程序可以并发执行,而不是并行执行。 2、程序、进程以及线程的区别 从定义来看 程序:程序是对算法的描述,一段静态的代码序列 进程:程序在一个 Read More
千万千万不要把java中的线程状态和操作系统中的线程状态弄混淆,如果线程状态没有搞清楚,并发编程就无从谈起。 在Java JDK类库中的Thread类里,只定义了6种状态。 Blocked:阻塞状态,等待锁的释放 New:未启动状态 Runnable:可运行状态,包括(运行和就绪状态) Termin Read More
线程让步Thread.yield():当前线程已经把重要的部分执行完毕,此时可以切换线程。 class MyThread implements Runnable { public void run() { int i = 0; while(i < 6) { System.out.println(Th Read More
Thread.sleep(ms):当前线程进入Time—Wait状态,并等待指定时间。 与wait的区别:wait只能用于同步块中,wait释放锁。 class MyThread implements Runnable { public void run() { int i = 0; while(i Read More
join():当前线程等待子线程终止 class MyThread implements Runnable { public void run() { int i = 0; while(i < 100) { System.out.println(Thread.currentThread() + " Read More
synchronized关键字定义同步代码块活方法,进入同步代码块的线程获得该对象的锁。锁没有释放,其他线程阻塞,锁释放,其他线程争锁。 实例锁:synchronized修饰非静态方法,线程获得普通对象的锁。 类锁:synchronized修饰静态方法,线程获得Class对象的锁。 class My Read More
1、Interrupt() 当该线程处于Runnable状态时,调用Interrupt()设置该线程中断标志 当线程处于Wait状态时,调用interrupt()该线程抛出异常并清除中断标志 当线程处于Blocked的状态时,调用interruput(),线程不响应中断,线程会在获得锁后自中断一次 Read More
1、JAVA内存模型(注意与JVM内存模型的区别) 内存模型:定义一组规范,围绕可见性、原子性、有序性定义变量的访问方式,屏蔽软硬件差异达到内存一致性效果。 2、volatile关键字 可见性:内存屏障保证写操作立刻刷新缓存,读操作要从内存读取最新值到工作内存 禁止指令重排:(针对普通无锁的全局变量 Read More
1、乐观锁与悲观锁 悲观锁:假设一定会发生问题,所以要进行加锁。 乐观锁:假设不会发生问题,边运行边检测冲突,发生冲突采取补偿措施,一般是不断重试。(CAS) 乐观锁适用于发生冲突频率不高的情况,悲观锁适用于发生冲突频率高情况(使用乐观锁就会不断重试开销很大) 2、公平锁与非公平锁 公平锁:多线程在 Read More
1、直接继承Thread package newthrow; class MyThread extends Thread { MyThread(String name) { super(name); } public void run() { int i = 0; while(i < 20) { S Read More
1、Spring的理解 Spring解决了业务逻辑和各层之间的耦合问题(比如,IOC、IOP、事务管理),使得开发人员将更多的注意力集中业务逻辑上。 2、Spring IOC与IOP的理解 IOC:将创建对象交由Spring容器负责,由BeanFactory接口和依赖注入支持。 依赖注入就是给Bea Read More
1、MyBatis的好处 MyBatis解耦了数据库操作和业务逻辑,简化了数据库编码工作。 2、MyBatis与Hibernate区别 MyBatis:简单方便易上手的半自动化持久层框架。 Hibernate:复杂功能强大的全自动化持久层框架。 3、#{}与${} #{}:相当于一个占位符,解析之后 Read More
1、SpringMVC的工作流程 ①用户发送请求到DispatcherServlet ②DispatcherServlet寻找合适的控制器并返回ModelAndView ③ViewResolver找到ModelAndView的视图 2、SpringMVC与Struct2 前者基于Controller Read More
1、PipedInputStream与PipedOutputStream简介 PipedInputStream与PipedOutputStream,分别是管道入流和管道输出流。他们的作用是线程间的通信,必须配套使用。输入输出都是针对程序本身而言的,A线程将数据写入PipedOutputStream, Read More
1、JDK与JRE JDK:全称Java Development Kit Java开发工具箱,由Java程序设计语言,Java虚拟机,Java API三部分组成 JRE:全称Java Runtime Environment Java运行环境,由Java SE API,Java虚拟机组成 可见JRE是 Read More
1、round()方法“四舍五入”,其实非也,它的实现是Math.floor(x+0.5);floor地板就是向下取整的方法。round(-1.7)的结果是-1,而不是-2。 2、String str = "i";和 String str = new String("i");的区别? 答:①存放空间 Read More
一、二分查找法模板 模板一 public binarySearch() { while(left < right) { mid = (right - left) >>> 1; if(check(mid)) { left = mid + 1; }else { right = mid; } } } 模板 Read More
一、常规小题 232. 用栈实现队列 一个栈肯定是实现不了啊,所以我们需要一个辅助栈。 class MyQueue { Stack<Integer> stack1, stack2; /** Initialize your data structure here. */ public MyQueue( Read More