2020年,跳槽面试就靠它们了,现在每天刷题,看源码文档,最近看的这些题目还是有些难度,有一部分我都要好好想一想才能回答出来,或者回答不出来,总的来说知识宽度够了深度还跟不上。所以要重点突破下底层的东西。这篇文章我总结了很久,希望对正在准备面试的同仁们有点帮助。没错我就是传说中的面霸!! 一. 面试准备

首先,是笔试题,这点是初级程序员绕不过去的坎。

笔试题一般的公司都会出的,除非你是大牛,可以选择不做。所以,还是老老实实的准备吧。

这里列举下一些比较常见出现的问题

  • JAVA
  • 5个常用的java-api包。
  • String类中常用的5个方法。
  • API接口开发的注意事项。
  • TCP/IP、HTTP协议。
  • 集合相关的问题(重点)
  • HashMap、TreeMap、Hashtable、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的实现和区别之类的。
  • 上述集合中的那些是线程安全的,那些不是。
  • 在那些场景使用这些集合。
  • List、Map、Set三个接口,存取元素时,各有什么特点。
  • 线程相关问题(重点)
  • 创建线程的几种方式。
  • 线程同步的方法。
  • wait和sleep区别。
  • Runnable接口和Callable接口的区别。
  • 如何实现线程安全。
  • 框架相关知识(这块反而不多)
  • Mybatis#和$的区别.
  • Hibernate和Mybatis的区别。
  • Spring MVC和Struts2的区别.
  • Hibernate的缓存机制。
  • 什么是Hibernate延迟加载.
  • 为什么要用spring。
  • SQL(主要考察Group by和Order by相关知识)
  • 查询每个班级成绩最高的学生。
  • 查找出每个班级成绩第二的学生。
  • 按照班级查询每个班上总分前三的学生。
  • 查找入职员工时间排名倒数第三的员工所有信息。
  • 薪水排序后薪水排名在第2–8的员工。
  • 按工资进行排名,排名从1开始,工资相同排名相同(如果两人并列第一则没有第二名,从第三名继续排)。
  • 用一条sql语句取出所有姓名有重复的学员姓名和重复的记录数。
  • JavaScript/JSP/Servet (这些一般是基础题)
  • JSP的内置对象以及作用。
  • JSTL的常用标签。
  • Servlet的生命周期。
  • URL和URI的区别。
  • Ajax同步和异步的区别。
  • 使用ajax发送异步请求的流程。
  • 其它
  • &和&&的区别。
  • ==和equals的区别。
  • int和Integer的自动拆箱/装箱相关问题。
  • IO和NIO的区别。
  • final、finally、finalize的区别。
  • 重载(Overload)和重写(Override)的区别。
  • String、StringBuffer和StringBuilder的区别。
  • 如何实现浅克隆和深克隆。
  • 单例模式的实现以及最优。
  • 排序的实现(冒泡、选择、快速等)。
  • 去除重复的元素(实际是重写equals和hashcode)。
二.面试流程

现在有不少公司先是人事面试,然后技术面试。所以在人事这块谈论工资的时候,最好不要说死,或者先不谈,留着技术面试过了之后再谈。有点因为在工资待遇这块没谈好,就直接走人了。毕竟面试双方都要花费不少时间,所以这块需注意!

在相谈的时候,要注意礼貌,无论是否成功,都应该注意言行和态度。

在面试结束之后,理应说声感谢!毕竟面试其实也是成长的一种。

三.面试技巧

个人能力这方面无非两个方面,广度和深度。

技巧很简单,就是说自己擅长的。技术掌握广,但是不深,就可以将自己的技术广度多说点,顺便可以提下自己的优点例如:学习新技术很快;技术掌握深,但是不广,就可以将掌握的深度多说点,可以提下自己在学习这块的专研度。如果在这两点都没有太明显的优点的,可以尝试从项目业务说,最好将项目吃透。与面试官相谈的切记要诚实,不要弄虚作假。碰到不会的或者了解不深的,直接跳过,最好将面试官引导到自己擅长的领域。

【阿里天猫、蚂蚁、钉钉面试专题题目加答案】

不会做别着急:文末有答案以及视频讲解,架构师资料

  • 1. junit用法,before,beforeClass,after, afterClass的执行顺序
  • 2. 分布式锁
  • 3. nginx的请求转发算法,如何配置根据权重转发
  • 4. 用hashmap实现redis有什么问题(死锁,死循环,可用ConcurrentHashmap)
  • 5. 线程的状态
  • 5. 线程的阻塞的方式
  • 6. sleep和wait的区别
  • 7. hashmap的底层实现
  • 8. 一万个人抢100个红包,如何实现(不用队列),如何保证2个人不能抢到同一个红包,可用分布式锁
  • 9. java内存模型,垃圾回收机制,不可达算法
  • 10. 两个Integer的引用对象传给一个swap方法在方法内部交换引用,返回后,两个引用的值是否会发现变化
  • 11. aop的底层实现,动态代理是如何动态,假如有100个对象,如何动态的为这100个对象代理
  • 12. 是否用过maven install。 maven test。git(make install是安装本地jar包)
  • 13. tomcat的各种配置,如何配置docBase
  • 14. spring的bean配置的几种方式
  • 15. web.xml的配置
  • 16. spring的监听器。
  • 17. zookeeper的实现机制,有缓存,如何存储注册服务的
  • 18. IO会阻塞吗?readLine是不是阻塞的
  • 19. 用过spring的线程池还是java的线程池?
  • 20. 字符串的格式化方法 (20,21这两个问题问的太低级了)
  • 21. 时间的格式化方法
  • 22. 定时器用什么做的
  • 23. 线程如何退出结束
  • 24. java有哪些锁?乐观锁 悲观锁 synchronized 可重入锁 读写锁,用过reentrantlock吗?reentrantlock与synmchronized的区别
  • 25. ThreadLocal的使用场景
  • 26. java的内存模型,垃圾回收机制
  • 27. 为什么线程执行要调用start而不是直接run(直接run,跟普通方法没什么区别,先调start,run才会作为一个线程方法运行)
  • 28. qmq消息的实现机制(qmq是去哪儿网自己封装的消息队列)
  • 29. 遍历hashmap的三种方式
  • 30. jvm的一些命令
  • 31. memcache和redis的区别
  • 32. mysql的行级锁加在哪个位置
  • 33. ConcurrentHashmap的锁是如何加的?是不是分段越多越好
  • 34. myisam和innodb的区别(innodb是行级锁,myisam是表级锁)
  • 35. mysql其他的性能优化方式
  • 36. linux系统日志在哪里看
  • 37. 如何查看网络进程
  • 38. 统计一个整数的二进制表示中bit为1的个数
  • 39. jvm内存模型,java内存模型
面试专题答案

2020金三银四,一篇文章教你如何征服面试官,拿到offer_java

 

设计模式面试专题以及答案.pdf

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_大数据_02

 

 

面试必备的悲观锁与乐观锁.pdf

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_Java_03

 

 

SpringCloud面试专题以及答案.pdf

2020金三银四,一篇文章教你如何征服面试官,拿到offer_java_04

 

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_大数据_05

 

 

Redis面试专题以及答案上.pdf

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_Java_06

 

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_Java_07

 

Redis面试专题以及答案下.pdf

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_java_08

 

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_大数据_09

 

SpringBoot面试专题以及答案.pdf

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_大数据_10

SpringBoot面试专题以及答案.pdf

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_大数据_11

SpringBoot面试专题以及答案.pdf

SpringMvc面试专题以及答案.pdf

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_大数据_12

 

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_java_13

 

并发编程面试专题以及答案.pdf

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_java_14

 

多线程面试专题以及答案.pdf

 

2020金三银四,一篇文章教你如何征服面试官,拿到offer_人工智能_15

 

 

【阿里巴巴面试题目】
  • 40. 如何把java内存的数据全部dump出来
  • 41. 如何手动触发全量回收垃圾,如何立即触发垃圾回收
  • 42. hashmap如果只有一个写其他全读会出什么问题
  • 43. git rebase
  • 44. mongodb和hbase的区别
  • 45. 如何解决并发问题
  • 46. volatile的用途
  • 47. java线程池(好像之前我的理解有问题)
  • 48. mysql的binlog
  • 49. 代理模式
  • 50. mysql是如何实现事务的
  • 51. 读写分离何时强制要读主库,读哪个从库是通过什么方式决定的,从库的同步mysql用的什么方式
  • 52. mysql的存储引擎
  • 53. mysql的默认隔离级别,其他隔离级别
  • 54. 将一个链表反转(用三个指针,但是每次只发转一个)
  • 55. spring Aop的实现原理,具体说说
  • 56. 何时会内存泄漏,内存泄漏会抛哪些异常
  • 57. 是否用过Autowire注解
  • 58. spring的注入bean的方式
  • 59. sql语句各种条件的执行顺序,如select, where, order by, group by
  • 60. select xx from xx where xx and xx order by xx limit xx; 如何优化这个(看explain)
  • 61. 四则元算写代码
  • 62. 统计100G的ip文件中出现ip次数最多的100个ip
  • 63. zookeeper的事物,结点,服务提供方挂了如何告知消费方
  • 64. 5台服务器如何选出leader(选举算法)
  • 65. 适配器和代理模式的区别
  • 66. 读写锁
  • 67. static加锁
  • 68. 事务隔离级别
  • 69. 门面模式,类图(外观模式)
  • 70. mybatis如何映射表结构
  • 71. 二叉树遍历
  • 72. 主从复制
  • 73. mysql引擎区别
  • 74. 静态内部类加载到了哪个区?方法区
  • 75. class文件编译后加载到了哪
  • 76. web的http请求如何整体响应时间变长导致处理的请求数变少,该如何处理?用队列,当处理不了那么多http请求时将请求放到队列
  • 中慢慢处理,web如何实现队列
  • 77. 线程安全的单例模式
  • 78. 快速排序性能考虑
  • 79. volatile关键字用法
【阿里巴巴面试题目含答案】
  • 80. 求表的size,或做数据统计可用什么存储引擎
  • 81. 读多写少可用什么引擎
  • 82. 假如要统计多个表应该用什么引擎
  • 83. concurrenhashmap求size是如何加锁的,如果刚求完一段后这段发生了变化该如何处理
  • 84. 1000个苹果放10个篮子,怎么放,能让我拿到所有可能的个数
  • 85. 可重入的读写锁,可重入是如何实现的?
  • 86. 是否用过NIO
  • 87. java的concurrent包用过没
  • 88. sting s=new string("abc")分别在堆栈上新建了哪些对象
  • 89. java虚拟机的区域分配,各区分别存什么
  • 90. 分布式事务(JTA)
  • 91. threadlocal使用时注意的问题(ThreadLocal和Synchonized都用于解决多线程并发访问。但是ThreadLocal与synchronized有本质的区别。synchronized是利用锁的机制,使变量或代码块在某一时该只能被一个线程访问。而ThreadLocal为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的数据共享。而Synchronized却正好相反,它用于在多个线程间通信时能够获得数据共享)
  • 92. java有哪些容器(集合,tomcat也是一种容器)
  • 93. 二分查找算法
  • 94. myisam的优点,和innodb的区别
  • 95. redis能存哪些类型
  • 96. http协议格式,get和post的区别
  • 97. 可重入锁中对应的wait和notify
  • 98. redis能把内存空间交换进磁盘中吗(这个应该是可以的,但是那个面试官非跟我说不可以)
  • 99. java线程池中基于缓存和基于定长的两种线程池,当请求太多时分别是如何处理的?定长的事用的队列,如果队列也满了呢?交换进磁盘?基于缓存的线程池解决方法呢?
  • 100. synchronized加在方法上用的什么锁
  • 101. 可重入锁中的lock和trylock的区别
  • 102. innodb对一行数据的读会枷锁吗?不枷锁,读实际读的是副本
  • 103. redis做缓存是分布式存的?不同的服务器上存的数据是否重复?guava cache呢?是否重复?不同的机器存的数据不同
  • 104. 用awk统计一个ip文件中top10
  • 105. 对表做统计时可直接看schema info信息,即查看表的系统信息
  • 106. mysql目前用的版本
  • 107. 公司经验丰富的人给了什么帮助?(一般boss面会问这些)
  • 108. 自己相对于一样的应届生有什么优势
  • 109. 自己的好的总结习惯给自己今后的工作带了什么帮助,举例为证
  • 110. 原子类,线程安全的对象,异常的处理方式
  • 111. 4亿个int数,如何找出重复的数(用hash方法,建一个2的32次方个bit的hash数组,每取一个int数,可hash下2的32次方找到它在hash数组中的位置,然后将bit置1表示已存在)
  • 112. 4亿个url,找出其中重复的(考虑内存不够,通过hash算法,将url分配到1000个文件中,不同的文件间肯定就不会重复了,再分别找出重复的)
  • 有1万个数组,每个数组有1000个整数,每个数组都是降序的,从中找出最大的N个数,N<1000
  • 113. LinkedHashmap的底层实现
  • 114. 类序列化时类的版本号的用途,如果没有指定一个版本号,系统是怎么处理的?如果加了字段会怎么样?
  • 115. Override和Overload的区别,分别用在什么场景
  • 116. java的反射是如何实现的