JAVA面试之路

总结

[toc]

基础题

语言
  1. 谈谈你对java语言的理解;
  2. 是否接触过其他开发语言,谈谈Java语言与其他语言的优缺点或区别;
特性
  1. 阐述下你对Java语言的三大特性的理解;
  2. 结合项目,说说你对三大特性的使用和理解;
  3. 如何看待Java中三大特性的滥用,或者时极简代码与冗余代码区别,更倾向于哪一种;
  4. 如果让你设计一个功能模块,你会从哪些方面考虑;
  5. 类是否可以多继承或多实现;
  6. 接口类与抽象类之间的区别;
设计模式
  1. Java常用的设计模式;
  2. 项目中用到的设计模式;
  3. Spring框架中用到的设计模式,列举几个;
类型
  1. Java中的基础类型;
  2. 谈谈对String的理解;
  3. 如果让你重新去定义一个String类,讲讲实现方式;
  4. 变量的创建几种方式:
  5. 基本类型比较,'==' 与 'equals'区别;
  6. String、StringBuilder和StringBuffer之间的区别;
/**
 * 整型字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象,所以f1==f2的结果是true,而f3==f4的结果是false.
 */
@Test
public void compareTest() {
    Integer num1 = 100, num2 = 100, num3 = 150, num4 = 150;
    System.out.println(num1 == num2); // true
    System.out.println(num3 == num4); // false
}
序列化
  1. 谈谈你对序列化的理解;
  2. 谈谈在项目哪些场景中使用到了序列化;
  3. 类实现序列化时会有一个serialVersionUID,谈谈它的作用;
多线程
  1. 谈谈对Java多线程的理解;
  2. 谈谈你项目中使用的多线程;
  3. 如何保证线程安全;
  4. 简述下ThreadLocal;
  5. 服务中的Bean实例是单线程还是多线程;
  6. Redis底层实现是单线程还是多线程;
  7. 谈谈对线程池的理解;
排序
  1. 简述几种排序算法和对应的复杂度;
  2. 冒泡排序;
  3. 快速排序,什么情况下达到最大复杂度;
  4. 堆排序;
  5. 插入排序;
集合
  1. ArrayLIst 和 LInkList区别;
  2. ArrayList 和 LinkList的实现原理;
  3. ArrayList 和 LInkList是否是线程安全;
  4. ArrayList 和 LinkList的最优使用场景;
  5. 是否了解过jdk源码,简述下Map的几种实现类;
  6. 说说对HashMap的理解;
  7. HashMap底层的存储结构;
  8. HashTable和HashMap之间的区别;
  9. HashTable和HashMap中是否线程安全;
JVM
  1. 对象的创建是在堆还是栈里面;
  2. 简述下GC流程;
  3. 简述下新生代和老生代;
  4. 新生代中各个区的作用;
  5. 方法在栈中的调用流程;

进阶题

框架
  1. 谈谈对SpringMVC的理解;
  2. SpringBoot与SpringMVC之间的区别;
  3. 谈谈对SpringBoot的理解(优缺点);
  4. 谈谈你对Dubbo框架的了解;
  5. Rpc调用与Http调用之间的区别;
  6. Dubbo服务基于什么协议调用;
  7. Dubbo服务的调用方式;
  8. zookeeper作用;
  9. zookeepper挂了,dubbo服务之间是否能正常调用;
  10. 在项目开发过程中是否对dubbo进行过扩展开发;
  11. 简述下Spring中的AOP和IOC;
  12. 是否了解SpringCloud;
  13. zookeeper实现分布式锁原理;
Redis
  1. redis中存储数据类型有哪些;
  2. 讲述下redis中zSet排序的实现原理;
  3. 如何用redis实现分布式锁;
  4. 用redis做分布式锁时,会有什么问题,如何解决;
  5. redis中数据的存储结构;
  6. redis底层是单线程还是多线程;
  7. redis的性能瓶颈在哪;
  8. 简述下I/O多路复用原理;
  9. 简述下一致性Hash或hash环;
  10. 针对缓存穿透、缓存雪崩和缓存击穿场景,怎么避免;
MySQL
  1. MySQL的存储引擎(InnoDB和MyISAM);
  2. MySQL的存储引擎之间有什么区别;
  3. MySQL左右连接与内连接之间的区别;
  4. MySQL左右连接查询有什么问题;
  5. MySQL的存储过程;
  6. MySQL的存储结构,B+树实现原理,有什么优点;
ElasticSearch
  1. ES中的倒排索引原理;
分布式
  1. 常用的分布式锁;
协议
  1. 说说TCP传输的三次握手四次挥手策略;
  2. http请求,说下其中的步骤;
  3. 为什么说Http请求是无状态的;

客观题

智商题
  1. 一根绳子对折三次剪开后,有几跟绳子?
  2. 井盖为什么是圆的?
思维题
  1. 看图说话,给一张桌子,桌腿长短不一,谈谈自己的理解?
  2. 给定一个假设,如果让你去统计这个城市的下水道井盖数量,你会采用哪些方法?
  3. 一个岛上有三只白羊,五只黑羊,七只棕羊,不同颜色之间两两对视则会变成同一种颜色,那岛上的羊是否会变成同一种颜色?

主观题

算法
  1. 给定一个字符串,校验该字符串是否是回文(写出你认为最快的方法)?
    1. 输入 aba, abba,aaaaa等,则返回true;
    2. 输入 abc,abac则返回false;
  1. 给定一个随机字符,找出字符串中最长的回文?
  /**
     * 输入一个字符串s,我们可以删除字符串s中的任意字符,让剩下的字符串形成一个对称字符串.
     * 且该字符串为最长对称字符串。如:输入google,则找到最长对称字符串为goog;如输入abcda
     * 则能找到最长对称字符串为aba。若最长对称字符串存在多个,则输出多个相同长度的最长对称字符串。
     */
    public static void main(String[] args) {
        // TODO 输出最长对称字符串:goog
        String input1 = "google";
        
        // TODO 输出最长对称字符串:aba
        String input2 = "abcda";
     
        // TODO 输出2个最长对称字符串:pop/upu
        String input3 = "pop-upu";
    
    }
  1. 手机号码合法性验证;
    /**
     * 新增手机号码,输出手机号码是否注册成功,或注册失败的原因.
     */
    public static void main(String[] args) {
        // TODO 通过此手机号注册成功
        String phoneNum1 = "138 1234 1234";
       
        // TODO 通过本手机号无法注册,提示为非法手机号
        String phoneNum2 = "13812345abc";
    

        // TODO 通过此手机号注册成功
        String phoneNum3 = "13812345678";
      

        // TODO 提示此手机号已经被其他用户注册
        String phoneNum4 = "138 1234 5678";
        

        // TODO 此手机号码为中国大陆非法手机号码
        String phoneNum5 = "98765432101";
       

    }   
  1. 给一个字符串,输出所有字符串字符不重复组合;
字符串字符不重复组合, 比如: abc 组合为 [a, ab, ac, abc, acb, b, ba, bc, bac,bca c, ca, cb, cab, cba].
5. 给定一个数组numArray = new int[]{0, 1, 2, 3, 4, 5,7,9},一个整数 targetNum = 9,是的 numArray[i] +numArray[j] = targetNum成立,则返回对应的数组下标,反之返回null;
public static void main(String[] args) {
        // 随机数组
        int[] numArray = new int[]{0, 1, 2, 3, 4, 5,7,9};
        // 随机变量值
        int targetNum = 13;
        //TODO 当 numArray[i] + numArray[j] = targetNum时,输出 i 和 j

    }
  1. 已知一个有序数组[2, 3, 4, 5, 6, 7, 8, 9]被截断后变成了[6, 7, 8, 9, 2, 3, 4, 5],则当给定一个数 8时。则他所在数组中的下标变成了2,则怎么最快计算出下标索引;
public static int getNumberIndex(int[] array, int num) {
        // TODO 如何num在array存在,则返回对应的下标,否则返回-1
        
        
   }
项目经验
  1. 讲述下你在项目中印象最深刻的工作;
  2. 讲述下你在项目中有什么记忆深刻的问题;
  3. 如果现在给你一个新的服务,你会如何去设计和开发;
工作
  1. 为什么从上一家公司离职;
  2. 为什么选择我们公司;
  3. 未来三到五年的职业规划;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350