面试与java学习阶段

(1)面试

并发、JVM、分布式、TCP/IP协议
1)Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap这一类的。以下简单模拟一个数据结构的连环炮。

  • HashMap是不是有序的?
  • 不是有序的。有没有有顺序的Map实现类?
  • TreeMap和LinkedHashMap。
  • TreeMap和LinkedHashMap是如何保证它的顺序的?
  • 它们两个哪个的有序实现比较好?
  • 还有没有比它更好或者更高效的实现方式?

2)Java并发包当中的类,它们都有哪些作用,以及它们的实现原理,这些类就是java.concurrent包下面的。

  • 如果想实现所有的线程一起等待某个事件的发生,当某个事件发生时,所有线程一起开始往下执行的话,有什么好的办法吗?
  • 可以用栅栏(Java的并发包中的CyclicBarrier),那么面试官就会继续问你,你知道它的实现原理吗?
  • 你还知道其它的实现方式吗?
  • 很多种实现方式的话,那么继续问你,你觉得这些方式里哪个方式更好?
  • 你觉得还有比它更好的实现方式吗?

3)IO包和NIO包中的内容,NIO会是重点,IO包大部分都会比较熟悉

  • NIO模型要,selector一定要非常清楚它的职责和实现原理
  • NIO的核心是IO线程池
  • IO包的设计模式(装饰器模式),为什么要这样设计?

4)Java的虚拟机的内容。这部分主要包括三部分,GC、类加载机制,以及内存。
一个GC部分简单的连环炮。

①GC部分

  • 什么时候一个对象会被GC?
  • 什么时候一个对象会被GC?
  • 什么要在这种时候对象才会被GC?
  • GC策略都有哪些分类?
  • 这些策略分别都有什么优劣势?都适用于什么场景?
  • 给你举个实际的场景,让你选择一个GC策略?

②类加载机制

  • Java的类加载器都有哪些?
  • 每个类加载器都加载哪些类?
  • 这些类加载之间的父子关系是怎样的?
  • 双亲委派模型,什么是双亲委派模型?
  • 为什么Java的类加载器要使用双亲委派模型?
  • 如何自定义自己的类加载器,自己的类加载器和Java自带的类加载器关系如何处理?

③内存的连环炮。

  • 内存分为哪几部分,这些部分分别都存储哪些数据?
  • 一个对象从创建到销毁都是怎么在这些部分里存活和转移的?
  • 内存的哪些部分会参与GC的回收?
  • Java的内存模型是怎么设计的?
  • 为什么要这么设计?

5)讲述自己的项目经验,从进到远。重点在遇到问题,怎么解决的
6)其他

  • 计算机系统原理
  • 网络通信协议(TCP/IP,HTTP等)。
  • 数据结构与算法。
  • 著名开源项目的源码。
  • 你自己有很棒的开源项目。
  • 你的个人博客。

7)职位相关技术

(2)java阶段

1)java学习阶段
  1. java基础,AWT
  2. HTML/CSS/JS
  3. Servlet/JSP+Mysql(数据库,SQLYog/Navicat客户端)
  4. Servlet+JSP+Mysql

  5. 框架开发
    1. 技术学习Spring,Mybatis
    2. ssm框架(Spring+SpringMVC+Mybatis)
    3. +权限,shiro
    4. ssm+shiro 项目
    5. SpringBoot以及Spring生态
    6. 深入理解java,Java编程思想、深入理解Java虚拟机、大话设计模式等等书籍,
3)方向选择
《大型网站技术架构:核心原理与案例分析_李智慧》、《深入理解计算机系统》
《tcp/ip详解 卷一、二、三》、《数据结构与算法》
  1. 大数据Hadoop(HDFS、HBSE、Zookeeper等等)
  2. 分布式计算(MapReduce、Storm、Spark)
  3. 分布式缓存(redis)
  4. 分布式消息服务
  5. 软负载均衡
  6. 搜索引擎(lucene,ElasticSearch等)
  7. 等等

参考: 阿里社招面试如与Java学习

你可能感兴趣的:(java,杂谈)