0-3年经验,这样做可以帮你拿下大厂Offer
先介绍一下自己,我是本科,19年毕业,学校是中不溜的二本。 大四考研失利,找工作的时候没做太多准备,匆忙进了一个给政府做软件外包的小公司写C#。沉沦了几个月之后下定决心裸辞,跑到北京找了份互联网创业公司的服务端研发工作,算是转到Java了。在创业公司沉淀一年后,因为团队调整等诸多原因,开始找新的机会。 这是我在20年底准备的一点复习经验: 主要是自己在面试过程中整理的一些问题,以及自己被问到的关键点。 效果还是不错的,美团、字节、boss直聘、完美世界、滴滴、度小满、58、爱奇艺都通过了。 \[toc] 基础部分 专业基础 1. 计算机通信的四元组 2. tcp和udp是哪层的?啥区别?二者特点? 3. TCP协议 1. 握手挥手。一般问缺失某次握手会有什么结果,网络异常会如何等 2. keepalive方式和超时概念 3. 突发大量time-waiting/close-waiting/xxxx的tcp链接,判断原因,后续处理方式 4. 拥塞控制 4. CPU调度、死锁概念、银行家算法等 5. HTTP协议,主要看下1.1版本即可 JVM 1. 堆内存划分以及堆外内存 2. 直接内存的概念 3. 对象头 4. 线程共享与线程独占 5. 内存回收算法 6. CMS和G1的特点与过程,尽量详细,其他的基本很少问 7. 常用jdk工具,jmap、jstack、jps、jstat等的简单概念,知道这四个哪个是干啥的就行 多线程 1. 线程池的运行模型,以及参数意义和线程数的设定思路 2. 多线程间数据共享(拓展:进程间数据共享) 3. 多线程调度方式:Object类的、Thread类的以及JUC包的都需要了解 4. ThreadLocal和Inheritablethreadlocal 5. 生产-消费者模型 6. 异步/响应式优化设计,Future和CompletableFuture等 7. 阻塞队列 8. 线程安全的概念,HashTable到ConcurrentHashMap的变化,并自行设计一个简单的线程安全的集合类 锁 1. Sycronized锁升级机制 2. 偏向锁的概念 3. Lock接口 4. ReentrenLock的重入原理 5. ReadWriteLock简单了解(这玩意本来也没啥意思) 6. 设计一把锁(考的是你对锁的理解,要明白锁的几个必须元素,以及风险规避) 集合、Stream、Iterator等 1. Java8的Stream工作模式简单了解一下 2. Iterator、foreach(A a : Collection<A> aaa)、aaa.foreach()、for(a,b,c)的区别 3. ArrayList、LinkedList这些结构了解一下,知道集合中哪些线程安全哪些不安全,为啥不安全,就可以了 4. 为什么缓存一般建议在初…
阅读完整文章