美团149道面试题,全会拿40Koffer没问题(Java程序员学习方向)

一、数据结构与算法基础

· 说一下几种常见的排序算法和分别的复杂度。

· 用Java写一个冒泡排序算法

· 描述一下链式存储结构。

· 如何遍历一棵二叉树?

· 倒排一个LinkedList。

· 用Java写一个递归遍历目录下面的所有文件。

二、Java基础

· 接口与抽象类的区别?

· Java中的异常有哪几类?分别怎么使用?

· 常用的集合类有哪些?比如List如何排序?

· ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和优缺点?

· 内存溢出是怎么回事?请举一个例子?

· ==和equals的区别?

· hashCode方法的作用?

· NIO是什么?适用于何种场景?

· HashMap实现原理,如何保证HashMap的线程安全?

· JVM内存结构,为什么需要GC?

· NIO模型,select/epoll的区别,多路复用的原理

· Java中一个字符占多少个字节,扩展再问int, long, double占多少字节

· 创建一个类的实例都有哪些办法?

· final/finally/finalize的区别?

· Session/Cookie的区别?

· String/StringBuffer/StringBuilder的区别,扩展再问他们的实现?

· Servlet的生命周期?

· 如何用Java分配一段连续的1G的内存空间?需要注意些什么?

· Java有自己的内存回收机制,但为什么还存在内存泄露的问题呢?

· 什么是java序列化,如何实现java序列化?(写一个实例)?

· String s = new String(“abc”);创建了几个 String Object?

三、JVM

· JVM堆的基本结构。

· JVM的垃圾算法有哪几种?CMS垃圾回收的基本流程?

· JVM有哪些常用启动参数可以调整,描述几个?

· 如何查看JVM的内存使用情况?

· Java程序是否会内存溢出,内存泄露情况发生?举几个例子。

· 你常用的JVM配置和调优参数都有哪些?分别什么作用?

· JVM的内存结构?

· 常用的GC策略,什么时候会触发YGC,什么时候触发FGC?

四、多线程/并发

· 如何创建线程?如何保证线程安全?

· 如何实现一个线程安全的数据结构

· 如何避免死锁

· Volatile关键字的作用?

· HashMap在多线程环境下使用需要注意什么?为什么?

· Java程序中启动一个线程是用run还是start?

· 什么是守护线程?有什么用?

· 什么是死锁?如何避免

· 线程和进程的差别是什么?

· Java里面的Threadlocal是怎样实现的?

· ConcurrentHashMap的实现原理是?

· sleep和wait区别

· notify和notifyAll区别

· volatile关键字的作

· T

你可能感兴趣的:(面试,后端,java,java,学习,jvm,分布式,redis)