面试-基础篇

前言

上一篇文章我们完成了简历的编写,接下来就该进行技术了,技术这块主要会围绕如下几个方面。

1、java基础

  • 集合框架
    • list与set的区别
    • ArrayList、LinkedList、Vector的区别
    • Map、Set、List、Queue、Stack的特点与用法
    • map在for循环状态下使用remove()为何会抛出异常
    • set与list的区别
      结合使用场景去描述
    • 线程安全的集合类以及优化,cow模式
    • hashmap的实现
      此处需要深入了解源码,及hashmap多线程环境下会出现什么问题,这个几乎是必问,结合jdk1.7与jdk1.8的区别
    • hashtable与concurrenthashmap
      concurrenthashmap结合源码,jdk1.7与1.8的区别
    • 线程安全的各种集合类,cow模式等
  • final关键字,finally关键字
  • 异常的分类及处理,结合aop
  • 面向对象的五大职责
    结合项目或者某些源码进行描述
  • classloader的加载机制
  • 重写equals时为何要重写hashcode(),不重写会出现什么问题
  • java基础类型的向上转型,丢失精度问题
  • String类为何是不可变的,string的equals方法是如何实现的?
  • 接口与抽象类的区别,为何要这样设计?
  • 重载与重写
  • IO的优化,NIO
  • Object有哪些通用方法?
  • String、StringBuffer与StringBuilder的区别
  • 一致性hash
  • Java对象的生命周期

2、多线程与并发

  • wait()和notify()
  • 多线程环境下让3个线程依次按顺序执行,如何实现?
  • 创建线程的几种方式,应用场景?
    继承thread类,实现runnable或者callable接口
  • 线程和进程有什么区别?
  • 用 wait-notify 写一段代码来解决生产者-消费者问题?
  • 用java写一个线程安全的单例模式
    double check和枚举类型两种方式,延伸会问为何要double-check,枚举为何是线程安全的
  • notify()与notifyAll()有什么区别?
  • 如何获得线程的堆栈信息?
  • 线上服务器cpu 100%了,该如何排查问题?
  • i++ 操作在多线程环境下会出现什么问题?怎么解决?
    考虑使用AtomicInteger等相关的类
  • fork-join框架是什么?
  • 可重入锁是什么,有哪些?
  • 同步方法与同步代码块,有何区别,使用场景?
  • 同步代码块中抛出异常会发生什么?
  • volatile 变量和 atomic 变量有什么不同?
  • ReentrantLock与synchronized
  • 启动线程的方法是哪个?
  • 同步类容器和并发类容器有何区别,使用场景分别是?
  • CyclicBarrier 和 CountDownLatch 有什么不同?
  • java内存模型
  • 线程优化的方案
    可以参考cow模式,以及concurrenthashmap的优化锁力度等方面入手
  • volatile与synchronized
  • ThreadLocal线程局部变量
  • 多线程的设计模式
    Future-task,master-worker,Guarded Suspension,生产者消费者等
  • 设计一个高并发的系统,需要考虑哪些点?
  • 什么是线程池,你在项目中使用过哪些?
    线程池的几种方式要记清楚,底层使用的都是同一个构造方法,要清楚的知道每个参数的含义,线程池大小的优化,从io密集型和计算密集型方面去回答
  • 线程池中任务满了,会怎么处理?
  • 什么是阻塞式方法,自己去设计一个该怎么实现?
  • CountDownLatch
  • 队列(有界和无界)如何实现?

数据结构与算法

  • 两个有序的数组合并成一个数组,写代码实现?
给两个数组分别定义一个下标,最大长度是数组长度减一,按位循环比较两个数组,较小元素的
放入新数组,下标加一(注意,较大元素对应的下标不加一),直到某一个下标超过数组长度时
退出循环,此时较短数组已经全部放入新数组,较长数组还有部分剩余,最后将剩下的部分元素
放入新数组,大功告成。
  • 反转一个链表
  • 斐波那契数列
两种方式实现,递归和非递归
  • 树相关的数据结构
此处会问二叉树,排序树,avl树,红黑树,B树,B+树等相关的应用场景
  • 各种排序算法需要简单了解下
冒泡,快速排序,堆排序,二分法等等相关的都需要了解下
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java SE 基础: 封装、继承、多态 封装: 概念:就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽...
    Jayden_Cao阅读 2,291评论 0 8
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 43,027评论 11 349
  • 厦门,這個美丽的城市,從我儿时的记忆里一直盤旋蜿蜒到真实的接触。對於他,真的是喜歡到心裡去,就算現在他已被許多金錢...
    18岁的小仙女阅读 500评论 7 17
  • 2008年之前的美国经济相当于进入了加护病房,而2008年之后,像是打了一剂强心针一般,现在可以说已经度过了危险期...
    基秘档案阅读 577评论 0 1
  • 吴茉莉怎么也没想到,死亡会来的这么快。只是出门摔了一跤,居然就爬不起来了。 吴茉莉今年已经86岁了,如果真的死了,...
    25a4d71a9d37阅读 535评论 3 1

友情链接更多精彩内容