面试准备基础知识

计算机网络

  1. TCP/IP卷一(一定要看,优先看17-24章tcp那块的内容,看完之后,对TCP的理解会提高很多)
  2. TCP和UDP区别,分别适用于哪些场景
  3. 三次握手和四次握手,是否可以两次握手,为何要四次握手?TIME_WAIT状态
  4. Get和post区别
  5. PAWS,几种定时器,close_wait状态。 必须能记住几张图,并且知道大多数细节
  6. TCP拥塞控制。

操作系统

  1. IPC
  2. PIPE
  3. 共享内存
  4. 信号量,介绍一下信号量和互斥锁
  5. Socket
  6. 服务器客户端通信
  7. 多线程
  8. 多进程模型
  9. IO多路复用
  10. select
  11. poll
  12. epoll
  13. 线程和进程有什么区别?
  14. 协议栈实现原理推荐 阿里陶辉 的博客 。网络编程基础推荐,游双的linux高性能服务器编程,最好理解全文。

Java

  1. 如何在Java中实现线程?
  2. java多线程会有同步的问题,讲一下synchronized和lock的区别?
  3. 知道cookie么?讲一下(cookie是重要考点,一定要可以讲的超级清楚)
  4. jvm:full gc,内存泄漏,CMS收集器
  5. jvm内存区域和GC,finalize方法,哪些对象可以作为GC Root
  6. NIO的DirectByteBuffer和HeapByteBuffer,同步和异步,阻塞和非阻塞
  7. ReentrantLock源码,AQS,synchronized实现,乐观锁和悲观锁,volatile,ThreadLocal原理,线程池工作流程
  8. HashMap和ConcurrentHashMap基本原理,扩容机制等
  9. jre和jdk的区别
  10. jvm内存模型。每个区什么用。区别。
  11. 讲下堆的作用。
  12. 堆的垃圾回收对象选择原则。
  13. 垃圾回收算法。谈到了年轻代和年老代。
  14. 年轻代怎么分。为何分为eden和s区。大小比例为何是1:8,还有别的区分方法吗?各个代的垃圾回收算法。
  15. 是否可以在static环境中访问非static变量?

数据库

  1. innodb和myisam区别?
  2. B+树性质
  3. 多列索引及最左前缀原则和其他使用场景

发散问题

  1. Linux命令相关,问有一个文件A.txt,里面有许多行,找出其中带关键字’B’的行,并统计重复度。我问了下重复度是指啥,他说,这样吧,假设每一行都是由空格分隔开的若干字符,若整个文件中,有2行的最后一个字符都是’10’,你就输出 “10” : 2。
  2. 假如在服务器上执行一个进程时,你发现服务器很卡顿,你会怎么查找原因。感觉这道题真有点坑,本来就有点蒙,针对你的一些回答,还会多问一些东西。
  3. 有8个小球,其中七个的重量是相同的,有一个较轻。给你一个天平,问秤几次能找出那个较轻的小球,若天平只能秤两次,又该怎么秤(这个问题当时居然没答出来,真是悲剧,后来回去再想了想,发现其实很简单的。。。)

参考面经

http://m.nowcoder.com/discuss/26140?type=0&order=0&pos=12&page=1
http://m.nowcoder.com/discuss/25665
https://www.nowcoder.com/discuss/25226
https://www.nowcoder.com/discuss/22089