面试

Posted by 盈盈冲哥 on March 5, 2020

实习面试

  • 20/2/25 阿里云

    • 自我介绍太生硬
    • 一般用什么语言,用过什么Java的数据结构,List包含哪些,ArrayList和LinkedList的区别,队列应该用ArrayList还是LinkedList实现
    • Leetcode 17,提示用队列
    • hashcode相同的对象是否一定相等,有什么用
    • TCP和UDP的区别和应用场景
    • 一般用什么数据库,乐观锁悲观锁的区别和应用场景,悲观锁不上锁那别的进程修改了怎么办
    • 研究生学过的课,考研比较擅长的课
    • 三次握手,传了SYN为什么还要传ACK
    • 对Maven的理解,Maven的生命周期、命令
    • 了解什么新的技术,希望从事哪方面的工作,对于云计算有什么了解
    • 反问有什么不足可以改进:断点debug,基础,java工程化经验(Maven原理)
  • 20/2/28 钉钉

    • I am @!#$software1234engineer1234输出engineer software am I
    • 如何一次循环O(n)时间
    • 项目:项目是商业应用吗,上线了吗,你是负责什么的,shiro是做什么用的,用户角色权限目录之间的关系,用户怎么查到权限,用户角色权限的存储,多对多关系的存储,用户角色权限设置了哪些接口,shiro是怎么和持久化框架连到一起的,为什么选择shiro简化了哪些工作,法规搜索用到什么技术,部署到服务器使用什么技术
    • http状态码,4和5的区别
    • 服务器超时,前端怎么处理
    • http协议的原理
    • 前端请求后端数据的技术,数据格式是什么,json的特点,json和xml的区别和好处
    • 知道哪些Java集合类,List知道哪些,ArrayList是线程安全的吗,有哪些线程安全的List,你如何实现线程安全的List
    • 为什么要有多线程并发
    • 实现线程同步的方法,volatile的特性
    • 实现多线程的方法,线程池有哪些,线程池的好处,固定长度的线程池和可变长度的线程池各有什么优缺点
    • 数据库是怎么用数据结构优化存取时间的
    • 索引有哪些,聚合索引的机制,最左前缀匹配,abc三个字段组成一个聚合索引,查询bc可以用到这个索引吗
    • 反问这个岗位最重要的品质:技术和落地
  • 20/3/2 钉钉二面

    • 自我介绍
    • 项目中遇到什么问题,如何解决,原理是什么
    • SpringBoot(跟Spring的区别)、JPA(跟MyBatis的区别)、Shiro介绍
    • 项目怎么继续优化,elasticsearch和solr的原理是什么
    • JVM区域划分,Java类是怎么加载到内存的(类加载的步骤)
    • 用户如何获取到权限,如何说服甲方避免从用户直接获取到权限
    • 反问这个岗位最重要的品质:基础知识和项目
  • 20/3/3 淘宝

    • 自我介绍
    • 兴趣爱好
    • 项目:shiro的作用(认证、授权),法规检索为什么是自己做的不用ES,项目的结构框架(一开始我说Maven,后来他说不是这个意思,是指项目的层次结构),有没有把实验室和课程中学到的知识运用到项目中,Scrapy爬虫框架的结构介绍(spider、中间件、pipeline),反爬机制有哪些(IP池、UA、减慢速度),知不知道网站如何防爬,为什么爬虫要用到关键词提取、命名实体识别,为什么选HanLP,有没有试过其他的自然语言处理工具
    • 项目中遇到的最大的问题,解决的原理
    • 选过什么课,成绩怎么样,分词算法知道哪些
    • 怎么学习(书、网上的博客、和同学交流),看过什么书,哪本书的哪一部分比较印象深刻,书上说的有自己动手实践过吗,觉得自己Java学得怎么样
    • 垃圾收集器的原理和算法,FullGC的触发条件,CMS垃圾收集器的算法
    • 类加载器的原理,类加载器怎么破坏双亲委派机制
    • Java新特征(lambda表达式、方法引用、G1垃圾收集器),G1垃圾收集器介绍
    • Atomic的原理
    • 悲观锁和乐观锁介绍和应用场景
    • 三次握手,滑动窗口有什么用
    • IO有哪几种(BIO、NIO、AIO),它们各自的特点和区别,知道select、poll、epoll吗
    • 数据结构本科应该学过吧,平衡二叉树介绍
    • hashmap、hashtable、concurrenthashmap的区别和原理,源码看过吗,hashmap的key可以是可变的吗,会遇到什么问题,是在编译阶段遇到问题还是运行阶段遇到问题,concurrenthashmap为什么高效
    • 线程池的好处,如果内存足够,线程池里的线程是越多越好吗
    • leetcode 181 SQL,内连接、左外连接、右外连接、全连接的区别
    • 文件读写、外部排序、怎么优化(多线程缓存队列)
    • 反问你认为你们团队的技术氛围怎么样
  • 20/3/7 CBU

    • 介绍一下项目里用到的技术,在项目中扮演的角色,java接触多久,框架怎么学习,除了shiro还知道什么认证授权的组件,项目里的选型是谁选的
    • shiro怎么处理分布式的情况(可以把用户的信息密码这些放到各个主机里,然后每次用户登录都去对应的主机取数据)
    • concurrent包有哪些组件(concurrenthashmap copyonwritearraylist),用过吗
    • 重写equals方法需要注意什么,为什么要重写hashcode方法
    • 讲一下双亲委派模型
    • 反问实习生会受到什么培训,负责什么工作:会有师兄一对一带的,阿里的培训还是很完善的
  • 20/3/10 淘宝

    • 项目:是商业项目吗,IP池,公开的IP是服务器吗,为什么可以绕过封锁,命名实体识别那些是干吗的,thinphp框架的结构,thinkphp前端怎么获取后端数据,thinkphp怎么管理事务,权限管理解释一下
    • http的原理,状态是存在哪里,session如何得到用户对应的数据http协议数据格式,有什么重要的数据
    • java并发包用过哪些,hashmap和concurrenthashmap的区别,hashmap的死循环问题
    • nio举个例子说明有什么用
    • 类型擦除
    • 数据库的一致性举个例子说明一下
    • 双亲委派模型,为什么要双亲委派
    • 项目里用到什么设计模式,工厂设计模式和单例设计模式不算
    • 编程题:两种方法实现二叉树层数
    • 反问实习生会受到什么培训,负责什么工作:走阿里的程序,有转正答辩,流程还是比较复杂的
  • 20/3/11 飞猪

    • 自我介绍
    • 项目:智能执法平台介绍,认证授权的过程,shiro的原理,IP池怎么维护,法规检索怎么做的,词典保存在哪里,顺排索引和倒排索引的区别,怎么优化测试IP时的时间消耗(用一个线程专门检查IP的可用性)
    • 怎么学习
    • hashmap的原理和数据结构,hashmap可以多线程吗,会出现什么问题,concurrenthashmap加的是什么锁,JDK1.8做了什么改动
    • java内存分区,虚拟机栈和本地方法栈的区别,CMS垃圾回收器,标记-清除算法有什么缺点,怎么解决
    • 创建线程的方法,callable和runnable有什么区别,不返回运行状态可以用callable吗,线程池的特性(分类?),线程池的参数
    • 出现OOM异常怎么排查,怎么看哪里有问题,CPU占用过高怎么排查,用什么命令看
    • 反问实习生会受到什么培训,负责什么工作:培训一下阿里的价值观,写业务,但是会有师兄带
  • 20/3/13 CBU

    • 自我介绍,有没有实习过,单位是做什么的
    • 怎么设计线程池(用一个容器放线程,用一个变量存当前线程个数,然后用一个队列存阻塞的线程),怎么设计阻塞队列,要考虑什么问题
    • 垃圾怎么清理(GCRoots向下追溯,分代收集),这是第一步,然后怎么清理
    • 设计模式,代理设计模式
    • spring加载的过程
    • 怎么设计数据库表
    • 项目:是不是分布式的,检索的原理,为什么不用倒排索引
    • 反问实习生会受到什么培训,负责什么工作:跟大学里一样有一些公开的讲座,也是要靠自己自觉去学
  • 20/3/16 阿里妈妈

    • 笔试两天之前发的:日志统计出现次数并排序

      uniq -c 记录重复次数

      cat /home/admin/logs/biz.log grep “Login” uniq -c sort -nr
    • 代码是你写的吗,解释一下思路,觉得复不复杂
    • 如果日志是海量数据怎么处理(散列成小文件),有什么问题吗
    • 项目里会写注释吗,会分函数吗,了解过Java代码的规范吗
    • 怎么定位慢SQL,explain的字段有哪些,type字段最好到最差怎么排序
    • java怎么连数据库,MyBatis用过吗
    • 有没有做过安卓、iOS开发
    • 有没有做过线上的JVM错误排查
    • 怎么限流,有没有做过,服务依赖、服务降级
    • 网络安全:跨脚本攻击、XSS、SQL注入
    • 有没有用过阿里云、腾讯云
    • HTTP协议是有状态的协议吗,302、500什么意思
    • 项目哪个最复杂,有多人协作吗,多人管理项目的流程
    • 怎么学习,毕业以后的打算
    • 反问实习生会负责什么工作:广告的业务
  • 20/3/30 美团

    • 自我介绍
    • 项目介绍:并查集,Maven怎么控制版本,Maven的生命周期
    • 跳表介绍,有什么缺点
    • OSI 7层模型,HTTP的过程,DNS的步骤,HTTP的幂等性,get请求和post请求的区别
    • TCP的三次握手、四次挥手,为什么握手三次,挥手四次
    • 双亲委派模型,三个级别的类加载器的功能
    • java.lang.String写个一模一样的可以运行吗,会报错吗
    • HashMap,100个元素要建多大的HashMap,负载因子是什么,默认是多少
    • 重写equal不重写hashcode会怎么样,会报错吗,重写hashcode要注意什么,一个学生的学号、姓名、性别、地址应该怎么计算hashcode,hash函数(除方法、乘方法)
    • Java堆(分代收集,新生代、老年代),YoungGC和FullGC的触发条件
    • 线程有哪些状态,怎么转换,死锁
    • 线程池介绍(线程池的优点,4种线程池,构造函数的参数)
    • MySQL的ACID,隔离级别,默认是什么隔离级别,解决了什么问题,脏读和幻读解释一下
    • SQL:表中有学生学号、课程、成绩,找出学生的课程总分在一个范围内的学号
    • 算法题:走台阶
    • 反问实习生负责什么业务:写Java,到店事业群,围绕一台机器的业务
  • 20/4/1 Zoom

    • 自我介绍,项目介绍
    • JPA的一对一一对多多对多关系优化,全自动框架怎么优化SQL
    • AOP介绍,织入顺序怎么解决
    • 用Java定时启动一个请求怎么实现
    • InterruptException是怎么引起的
    • 主线程得不到子线程句柄,不能interrupt子线程,怎么退出主线程,有什么参数
    • ArrayList和LinkedList的区别和应用场景
    • ArrayList和LinkedList是线程安全的吗,JDK有什么自带的线程安全的List
    • HashMap:保证equals和hashcode相等,key的字段可以修改吗?Bean对象有多个字段,怎么重写hashcode?
    • 口头算法题:Arraylist.removeAll(Set)怎么实现
    • 口头算法题:abcoefp找包含aop的最短字符串,顺序无所谓
    • 导致线程不安全的原因,除了竞争还有什么
  • 20/4/8 快手

    • 自我介绍
    • MySQL引擎有哪几种,InnoDB和MyIsam的区别,mvcc介绍
    • B树和B+树的区别
    • 组合索引,ab的组合索引where b能用吗,abc的组合索引创建几个B+树,ab、ac两个组合索引where a会用哪个
    • TCP的三次握手、四次挥手,序列号,TIME_WAIT是在哪个阶段
    • 滑动窗口介绍,有什么用
    • volatile,除了可见性还有什么语义
    • hashmap、concurrenthashmap、hashtable
    • threadlocal
    • 算法题:单例,行有序列有序矩阵查找,带随机指针的链表复制,一万亿数据排序,归并k个列表
    • 反问实习生负责什么业务:实习生做什么他也不知道,但是他们组是做流的推送、视频上传、评论点赞
  • 20/4/9 快手二面

    • 数组和链表插入删除的时间复杂度
    • 二叉平衡排序树查找的时间复杂度
    • 边密集的情况下怎么找到最小生成树,kruskal和prim的区别,成环怎么办
    • 建堆的时间复杂度
    • 数组增长再下降怎么求最大值
    • 查找子串,时间复杂度,kmp的思想,动态规划的思想
    • http和https除了加密还有什么不同
    • http请求报文和响应报文是一样的吗,http请求报文首部字段(host、语言、编码),是什么的语言和编码,语言的英文
    • nio和io的区别,nio选择器怎么选择通道
    • XXXX(没听说过)
    • int和Integer的初值,可以直接给实例变量设值吗
    • atomicinteger的原理,cas发现不一样会怎么样(乐观锁也有悲观的时候)
    • 新建对象怎么到堆里的,大对象是直接进老年代吗,有什么机制
    • servlet和spring的区别
    • aop的实现原理(动态代理,JDK,CGLib),为什么没有接口只能用cglib
    • aop的实现方法(说成事务的实现方法了)
    • 注解的原理
    • spring项目怎么部署到服务器
    • springboot为什么不用配置web.xml,如果要配置怎么配置
    • 有没有用过zookeeper和kafka
    • 会不会git,merge和rebase
    • linux常见命令,服务器拷文件怎么拷(scp, ftp),linux怎么找到java进程(jps,他问你确定,ps -aux grep)
    • 算法题:实现一个k-v的内存计数类,功能包括添加、删除、查询、自增四个功能(提示要线程安全,concurrenthashmap,提示要用原子变量)
    • 反问有什么学习建议:近期找工作的学习要熟悉API,算法还可以
  • 20/4/9 OPPO

    • 自我介绍
    • 什么专业,擅长什么
    • 项目介绍,代理IP为什么是可以爬到并且是免费的,Scrapy爬虫框架介绍,爬虫项目中遇到的比较难解决的问题
    • 如果自己实现爬虫请求调度系统怎么实现(阻塞队列),请求怎么去重(concurrenthashmap),有concurrenthashset吗,map与set比会不会浪费内存,分布式怎么优化(redis集群),如果缓存断电丢失了数据,而文件持久化不是实时的怎么办(主从机制,他说直接忽略也可以,大不了再爬一次),怎么保证缓存和数据库的一致性(写入的时候先删除缓存再更新数据库,读取的时候先读缓存再读数据库再写入缓存),写入的时候先删除再更新数据库再写入缓存行不行
    • 线程池参数、运行流程,如果阻塞队列用linkedhashmap会有什么问题
    • Spring运行run之后的加载的原理(讲了ioc容器,他说不熟悉的话我们换个话题)
    • concurrenthashmap介绍,为什么h h»16,为什么&(n-1)
    • 对每个网络io建立一个连接会有什么问题(时间、内存),如何解决(连接池),如何解决上述问题
    • 会不会netty,nio介绍,epoll介绍,看我不太会给我讲了下,建议我学一下netty
    • 口头算法题:数组中的数范围为0~n-1,有一个数重复,常数空间怎么找出来
    • 口头算法题:层次遍历二叉树
    • 反问实习生负责什么业务:云当中底层组件、中间件的开发,不用写很多代码,但是对代码质量要求比较高
  • 20/4/11 作业帮

    • 第二个项目他比较感兴趣介绍一下,有什么可以改进的地方,学到了什么
    • 第一个项目用户怎么获取到权限,如果让你改成用户不直接关联权限怎么做,写个脚本修改会遇到什么问题,数据库表是怎么设计的
    • 数据库B+树的特点,ACID是什么,ACID怎么保证
    • 算法题:顺时针旋转输出二维矩阵
    • 算法题:next permutation,34521
    • 反问实习生负责什么业务:业务接口的开发
  • 20/4/12 口碑

    • 什么时候毕业,愿意来杭州吗
    • 熟悉的技术介绍,java写了多久了,写过多少代码,两年只写了一万?
    • 项目介绍,用户认证是小程序登录利用api实现的还是怎么做的,项目中遇到的比较难解决的问题
    • 面对对象的理解介绍(封装继承多态),多态怎么实现,实现原理是什么,或者你会怎么实现
    • 什么课学得比较好(数据结构网络),java中常用的数据结构(arraylist、linkedlist、hashmap、treemap、hashset),栈用过吗,有什么用(先进后出,括号匹配、字符串求值),如果翻转一个字符串怎么写
    • TCP介绍(三次握手四次挥手,滑动窗口,可靠连接,流量控制,拥塞控制),TCP和UDP的区别,为什么要三次握手,只握两次不行吗,为什么要四次挥手,只挥后面两次不行吗
    • 数据库用过什么,事务的ACID,隔离性解释一下,事务的隔离级别,默认是什么隔离级别,解决了什么问题,幻读解释一下
    • 知道什么设计模式(观察者代理策略单例工厂),观察者模式介绍,有什么用(基于事件的编程),代理模式介绍,代理模式实现原理,项目中用到什么设计模式(aop用到代理模式),他说不算要自己写的(随便说了个工厂模式建立数据库连接)
    • 分布式了解吗,把你的理解说一下(说了反向代理)
    • 在看什么书(并发jvm网站架构),有什么觉得掌握得比较好的(hashcode equals concurrenthashmap),concurrenthashmap有什么你觉得设计得比较好的地方,使得它比较高效(对于每个数组结点加锁,如果是null会用cas添加,如果是forward会帮助扩容,不是的话会加synchronized),null的时候cas是怎么添加的(循环、unsafe)
    • 反问实习生负责什么业务:跟正式员工一样,但是可能有一两个星期熟悉
    • 可以实习多久
  • 20/4/14 微软上海

    • 一面:自我介绍,算法题:a的n次方,编写测试用例,浮点数,负数,0的0次方,二分,还能怎么优化
    • 二面:自我介绍,项目介绍,项目中遇到的问题或者难点,了解JVM和类加载吗,多线程有什么principle,竞争,栈和队列,算法题:怎么用栈实现队列,设计模式,单例双重检查,还有什么其他的写法,实习中学到了什么,有没有遇到过团队中的分歧,怎么解决,自己的优缺点,怎么学习,看了什么书,反问实习生负责什么业务,不同组不同,有的是直接加入到组里的项目
  • 20/4/15 作业帮二面

    • 自我介绍,项目介绍
    • 算法题:输出每个岛屿面积,dfs
    • HTTP的过程
    • 拥塞控制
    • cookie和session
    • MySQL索引的数据结构,B+树和B树有什么区别,聚簇索引和非聚簇索引,a>0走索引吗,a!=0走索引吗
    • MySQL事务的实现原理,ACID,原子性的实现原理
    • 线程安全
    • JVM垃圾回收
    • 线程和进程有什么区别
    • 操作系统Linux线程通信
    • 设计模式,策略模式,面对对象的原则
  • 20/4/16 美团二面

    • 自我介绍,项目介绍
    • 服务器限制IP的机制原理
    • HTTP请求报文,请求行、请求首部有哪些
    • 代理IP的原理,工作在传输层还是应用层,怎么代理的
    • 用户复制一个没有权限的URL怎么办
    • 实习部署到服务器上有几台机器,session集群
    • 代码题:List删去负数,写了个双指针,他意思是用迭代器
    • List迭代器插入another,然后list=another可不可以
    • 一个对象中两个synchronized方法可以一起进去吗,两个synchronized静态方法可以一起进去吗
    • 代码的事务和数据库事务的联系,怎么保证多个小系统组成的大系统的事务
    • JPA和Hibernate的关系,JPA和SpringDataJPA
    • 数据库连接池和JDBC有什么区别
    • 反问学习建议:感觉没怎么写过代码
    • 北京读大学,杭州人为什么不投阿里,实习时间
  • 20/4/17 网易云音乐

    • 自我介绍,项目介绍
    • 并查集是什么,解决什么问题,在项目里场景下的作用,ES倒排索引、查询的原理,怎么找到近义词,除了词向量还有什么方法
    • 爬虫多线程设计,IP池如何优先选取响应时间短的,如果不能联通还能有机会用吗
    • 算法题:最长公共子串和最短编辑距离哪个比较熟悉,写了个最长公共子串,他说是子序列又改成子序列
    • 线程通信的方法,countdownlatch的原理
    • 最近的学习,想往什么方法发展
    • 反问实习生负责什么业务:看分到什么组,其他网卡没听清
  • 20/4/18 百度一面

    • 自我介绍
    • 项目介绍
    • 爬虫的爬取速度,怎样实现多线程
    • ES和MySQL有什么区别,怎么优化,项目里用了几台服务器(奇数台),多少内存
    • MySQL关系型数据库和Mongo、Redis非关系型数据库有什么区别,如果有复杂的查询逻辑应该选择关系性还是非关系性
    • 数据库B+树,B树,B-树有什么区别
    • 给字段加索引的语句
    • 数据表很大,怎么优化,如果不水平分区还能怎么优化速度(limit, *)
    • 10万数据找10个最小的怎么找,时间复杂度
    • JVM垃圾回收
    • 怎么样会内存泄漏,项目里遇到过吗
    • 线程同步的方法
    • SpringBoot讲一下
    • AOP讲一下
    • Spring的模块
    • 迭代器的原理,跟循环有什么不一样
    • 反问实习生负责什么业务
  • 20/4/18 百度二面

    • 自我介绍
    • 项目介绍
    • 面对对象编程特点封装、继承、多态介绍
    • Redis有什么用
    • JVM垃圾回收
    • 新建线程的方法
    • hashmap的原理、数据结构
    • 线程池的优点
    • 数据库ACID,怎么实现
    • 设计模式,单例介绍,double check怎么加锁的
    • JVM中的什么区域会OOM
  • 20/4/18 百度三面

    • 自我介绍
    • 项目当中的难点
    • 有什么前几轮面试没回答好的问题吗
    • Spring、SpringMVC、SpringBoot、SpringCloud的区别
    • 网站除了bug还有什么指标,让你来优化网站速度怎么优化
    • 最近两年互联网比较火的词,区块链的特性知道吗,知道容器和微服务吗,知道云原生吗
    • 对未来十年互联网发展的展望,未来的个人发展展望
    • 上课你觉得老师讲错了,会怎么做
    • 工作的优先级怎么安排,紧急不重要和不紧急重要先做哪个
    • 近一年从实习中学到了什么,优点和缺点,为什么选择百度,希望从百度实习中学到什么
    • 了解百度的新闻吗,对百度这几年的发展有什么看法,了解什么百度的产品,喜欢什么产品
    • 关注过GitHub开源项目吗,提过issue吗
    • 项目做过code review吗
    • 了解python,java 100分的话,python能打几分
    • 软件工程了解吗
    • 实验室放暑期实习吗,放日常实习吗,哪里人
    • 反问实习生负责什么业务:因为是统一招聘,要看分到什么组,他们是做软件工程的动静态工具开发
  • 20/4/18 口碑二面

    • 自我介绍
    • 项目介绍
    • 数学建模介绍,为什么能拿奖,扮演什么角色,编程中遇到什么问题
    • 为什么用logstach来转移数据,ES的原理,倒排索引和正排索引的区别
    • 爬了哪些数据,程序编写的过程,网站有哪些反爬机制(ip、ua、用户行为),爬虫能应对哪些反爬机制,代理服务器的原理,除了转发HTTP报文还有其他方法吗,有没有出现用户登录的页面,怎样解决,模拟用户行为的原理(内置浏览器)
    • 了解什么java的工具和框架
    • hashmap原理,可以并发吗,为什么并发时JDK1.8尾插法会出现结点缺失
    • springboot用到哪些功能
    • springboot介绍一下
    • 笔试为什么0分,有什么思路吗
    • 反问 了解到团队负责业务开发,实习生具体会负责什么业务:支付宝点进去口碑的那些业务
  • 20/4/21 华为

    • 自我介绍
    • 项目介绍
    • lambda用过吗,跟传统的写法有什么区别
    • JVM了解吗,讲一下
    • Java会出现内存泄漏吗,项目中遇到过吗
    • 项目里有并发吗
    • JPA和JDBC的区别,有什么好处
    • 有没有写过前端
    • 路由器讲一下,怎么规划路径
    • 机器学习了解吗,推荐系统介绍
    • 算法题:最长回文子串,中心扩展,动态规划
  • 20/4/22 网易云音乐二面

    • 自我介绍
    • 项目介绍
    • 为什么选择shiro,shiro的原理,为什么要有security manager和认证器,返回的是什么数据
    • 为什么要加盐,只加密不行吗,提示我如果我要破解会怎么做
    • MD5是对称加密还是非对称加密,除了MD5还知道什么加密算法
    • 了解什么设计模式,shiro当中用到什么设计模式,提示我角色包括管理员可以用工厂模式,你会用哪种工厂模式,为什么
    • 从用户点击登录到收到结果的过程,HTTP和TCP的区别,TCP如何实现可靠连接,HTTP报文内容,TCP和HTTP两层之间报文的关系,TCP首部加入了什么数据
    • 在操作系统层面,CPU和内存的机制,判断两个对象相等的过程中CPU、内存怎么运作(不懂,说了如何实现equals方法),对象和方法存在JVM的什么区,hashcode怎么实现,hash函数
    • 如何快速学习某个技能
    • 反问实习生会负责什么业务:可以自由选择组
  • 20/4/24 网易云音乐HR面

    • 自我介绍
    • 其他面试情况
    • 家是哪里的,有什么爱好,一般会去杭州哪里散步,为什么投网易云音乐,喜欢什么歌,怎么看待互联网工作的强度
    • 项目介绍,项目背景,难点,遇到问题如何解决,收获,做了多久,有没有版本的迭代
    • 怎么学习的,最近在学什么,看什么书
    • 反问什么时候会有结果:她只是来负责面试的也不太清楚,大概要五一
  • 20/4/27 微软北京

    • 自我介绍
    • 项目介绍,用过Kubernate和Docker吗,为什么不用ES来匹配近义词,除了调库有什么优化吗
    • happens before,jmm
    • GC的算法,如何判断对象是否要垃圾清理,GC Roots包括哪些,有JVM调优的经验吗,JVM做过哪些实验
    • 网络和操作系统觉得学得怎么样,TCP为什么要三次握手,四次挥手TIME_WAIT的作用,半中断时客户端能向服务端发送吗
    • 算法题:矩阵每行个数不定,往右上斜着遍历,时间复杂度,如果一行有几千万,其他行只有一个,怎么改进
    • 口述算法题:给出一些边,求移动几条边可以使所有的点联通,无解返回-1
    • 反问学习建议:做项目时可以深入学习一下
  • 20/4/28 微软北京二面

    • 自我介绍(就没了?)
    • 项目介绍,除了调库还自己做了什么优化
    • 算法题:二叉树和为目标值的路径,非递归
    • 反问学习建议:做项目要深入学习原理,用了倒排索引要自己实现一遍倒排索引

秋招面试

  • 20/7/24 美团转正面试

    • 卡权益页面优化可以不改后端接口吗
    • 会员、会员卡接口性能优化
    • 服务架构图,扫码点餐是怎么调用,报表怎么生成,api的作用,除了dto转vo的数据转换还有什么用,组织机构映射应该在api吗,怎么分服务
    • 研发流程、上线流程、灰度怎么做、分支管理、打tag什么时候打,st要打tag吗
    • 有什么来美团之后觉得跟原来想得不一样的事情,举个例子
  • 20/7/24 美团转正述职

    • 有什么流程中觉得不好的地方,来美团之后觉得有什么不好地方
    • 成长目标还是动作,轮子的定义
    • 脏数据为什么会产生
    • 优化什么时候该继续用MySQL,什么时候该用ES
    • 基于服务的架构跟传统架构的优缺点
    • 学过什么美团的中间件(Databus)原理,了解Thrift、Pigeon的原理吗,之前有没有用过其他的RPC框架
    • 想留在上海吗,同事的名字记得住吗,调到其他团队可以再重新熟悉吗,在美团觉得累吗,印象最深刻的事情,最难的一件事情
  • 20/7/26 字节跳动飞书一面

    • 用户、角色、权限,用过属性权限管理吗,角色相同用户不同需要有不同的权限怎么办
    • 用户登录,加盐的作用
    • 死锁的条件,怎么检测(jstack),jstack怎么检测的
    • String为什么是final(https://blog.csdn.net/qq_29663071/article/details/81318907)
    • 检索优化是怎么做的,关键词检索不用ES原来是怎么做的,ES为什么能提高检索性能
    • 设计模式:策略模式讲一下
    • MySQL的如何优化,索引为什么可以,联合索引有什么特点(最左前缀匹配),为什么是最左前缀匹配
    • 301、302的区别
    • 算法题:给出下载了的电视剧集编号,找到最多可以连续看几集
    • 反问杭州的飞书的业务:他们部门是做飞书的权限管理,还有很多其他业务
  • 20/7/28 字节跳动飞书二面

    • 用MySQL的like查询改成ES查询,查询的结果会有变化吗
    • 可重入锁的原理,AQS介绍
    • hashmap和concurrenthashmap,看过源码吗
    • B树和B+树的区别,为什么要用B+树(范围查询)
    • 聚簇索引和非聚簇索引,主键索引和非主键索引
    • HTTPS的过程
    • CSRF
    • 策略模式
    • 接口和抽象类的区别
    • 学到什么编程技巧:DDD
    • 算法题:给出字母板,判断单词是否在其中
    • 反问杭州的飞书和北京的飞书有什么区别:即时通讯和日历在北京,后台管理员权限打卡汇报在杭州
  • 20/7/31 字节跳动飞书三面

    • 不用分布式锁怎么实现(说了数据库乐观锁和缓存,他说还是没法解决),分布式锁怎么实现,你会自己实现Paxos算法吗(不会,用zookeeper),对zookeeper了解吗
    • 数据库索引设计:需要检索用户当天的数据、用户数据、当天的数据(userId和time的聚合索引、time索引),检索用户当天的数据能用到那个聚合索引吗
    • 逻辑题:10个人坐多9个,9个人坐多8个,8个人坐多7个,11个人正好,问有几个人(考虑多一个人,变成两个条件)
    • 编程题:银行柜台的取款和存款函数设计,重点考虑并发控制及边界判断
    • 反问如果面试通过会负责什么工作:还不确定
  • 20/8/15 阿里云一面

    • 技术选型:为什么要用es,深度分页还有其他的解决方法
    • 监听mysql的binlog更新es,用到什么中间件,是怎么做的
    • session管理,http无状态协议如何找到session
    • SQL注入,CSRF,如何应对
    • Integer和int可以互相赋值吗,Integer a = null; int b = a;会怎么样
    • 遇到过线上JVM问题吗,CPU过高怎么办(jstack, 他说不一定是java进程造成的,top),jmap是干嘛的,可以看到变量值吗
    • JVM分区,equals和==,地址在哪里,堆里的内存是怎么样的,垃圾回收算法,方法区存的是什么
    • hashmap, hashtable, concurrenthashmap
    • mysql的聚合索引abc,a等于多少,c等于多少能走索引吗,怎么看用了什么索引(explain)
    • spring bean是怎么初始化的,怎么依赖注入的,怎么解决循环依赖
    • 开放问题:建立https网站要做什么,与http网站的区别
    • 算法题:leetcode第一题,边界判断,还有一题并发循环输出foobar可选
    • 反问北京和杭州的部门有什么区别:大部分技术都在杭州,产品经理在北京
  • 20/8/24 阿里云二面

    • 新订单状态bug如何定位解决的
    • 总部门店同时操作涉及并发吗
    • 垃圾回收
    • 编程时考虑过垃圾回收吗
    • 遇到过线上JVM问题吗
    • 并发接触多吗,分布式锁
    • 如何学习,看过哪些书影响比较深刻,学习项目中印象深刻的地方(tomap, json)
    • 优点缺点
    • 工作地点
    • 反问怎么提高核心竞争力:持续学习,专注深挖,不能脱离实际
  • 20/8/26 阿里云三面

    • 怎么把法规导入到ES里的
    • 性能优化ES索引存了什么数据
    • 代码题:单例
    • 算法题思路:链表检测环
    • 算法题:带random指针的链表复制
    • 反问怎么提高核心竞争力:学习技术,阅读开源代码,在某个领域内比较有深度,保持初心
  • 20/8/26 字节跳动教育一面

    • 算法题:删除排序链表中的重复节点
    • 之前面了三面是最后不想去吗
    • Java, C++, Python的区别
    • Redis实现分布式锁,Redlock
    • Java如何加载类,双亲委派模型
    • 反问教育业务介绍:分不同年龄段
  • 20/8/31 字节跳动教育二面

    • https过程,https为什么要用对称加密和非对称加密
    • 中间商代理了客户端到服务端的所有流量,怎么防止代理伪造请求
    • innodb主键索引和非主键索引,非主键索引为什么不存那一行的物理地址
    • 有什么索引,覆盖索引讲一下
    • http请求有哪些,get请求和post请求的区别,post请求报文包含哪些数据
    • 502, 503, 500
    • 算法题:二叉树和为sum的路径
    • 反问如何提高核心竞争力:不能把工作做完就好了,工作之余多思考,把知识点总结整理成树
  • 20/9/2 阿里云HR面

    • 考研为什么要转专业,什么带来了对计算机的兴趣
    • 怎么弥补跟本科计算机专业的同学在专业知识上的差距
    • 在美团实习期间遇到的最难的事情,怎么解决的
    • 在美团实习期间,学到什么习惯是最有用的,怎么学到这个习惯的,美团每个人都会做整理吗,你每天都会整理吗
    • 在美团实习期间,如何学习,有没有做过技术分享
    • 在美团实习期间,什么事情会让你有成就感
    • 业务和技术的关系
    • 如何提高核心竞争力
    • 前几面有没有去了解开放平台,为什么会对这个部门感兴趣
    • 毕业参加工作第一年想提高什么能力,入职之后除了技术,最想学习什么,为什么
    • 反问什么时候会有结果:九月中下旬等所有面试结束
  • 20/9/3 字节跳动教育三面

    • 一开始让我请用最简单的话回答他的问题,自我介绍了一半对其中的内容开始问问题
    • 解决新订单状态带来的消息未消费无法发券的问题花了多久,如何在架构上优化,避免这类新的订单状态带来的问题
    • 美团用的MQ原理、特点,如何保证topic的消费顺序和生产顺序一致(散列到一个partition),topic的多个partition是单线程生产消费的吗,散列到partition如果一个partition负载特别高其他partition空闲怎么办(负载均衡),一个key负载均衡到不同的partition如何保证消费顺序(在消息中添加一个递增的id),如何解决生产速度大于消费速度的消息积压问题,熔断限流和熔断降级的区别,项目中接触过吗
    • spring的ioc讲一下,有什么好的地方和不好的地方
    • 求一个点到其他点的距离用什么算法(dijkstra),还有什么算法(弗洛伊德),区别
    • 用100MB内存排序100GB文件,100MB内存能排序100MB文件吗(快排要logn空间,而且还要留给系统一些内存)
    • 设计一个ip白名单中间服务(redis的set),美团的分布式缓存(squirrel和celler),美团的Redis能达到多少QPS(10万,他说差不多一般能到八九万),数据库表如何设计(主键,ip,修改时间,删除位),时间用什么类型存(datetime),如何解决数据库和缓存的数据一致性问题(如果不追求强一致可以redis设置过期时间,追求强一致可以利用美团的databus中间件监听数据库binlog)
    • 反问如何提高核心竞争力:核心竞争力其实就是你的影响力,别人认不认可你说的话,在工作中多思考,锻炼方案处理、解决问题、拆解分析、统筹的能力,先练好基本功,建议在一个领域先深入,再追求广度

同学的面试

同学的面试

  • 阿里

    • 红黑树
    • ARP协议
    • java如何实现多态:虚函数子类重写,然后让父类对象指针指向子类,这是调用虚函数
    • leetcode751:给你一个cidr网络段,算出所有合理的ip,比如1.2.3.4/24,输出1.2.3.1~1.2.3.254
    • leetcode 1143:求两个字符串的最长公共子串
    • 如何解决hashmap线程不安全,concurrenthashmap的原理,扩容为什么是2的幂
    • SpringBoot实现的原理、AOP的原理、注解的原理(xml配置加注入)
    • 线程池
    • 最大的优点,AOP的原理
    • java1.8类加载是在哪里发生的(方法区移到元空间,在直接内存里)

    • 项目:增量添加(时间戳),查询依赖字段,实习中的难点、负责的工作
    • like能否使用索引
    • CPU过高怎么应对
    • 三次握手,为什么要有第三次
    • 往一个网页输入URL发生了什么
    • 用过的linux命令
    • docker对项目的部署

    • 项目介绍
    • SpringBoot和Spring的区别
    • AOP原理
    • MySQL如何导入Solr及如何增量导入
    • Bean的生命周期
    • hashMap扩容
    • JVM的结构、收集算法、G1和CMS的不同(stop the world发生时间)
    • session和cookie介绍
    • mysql acid和事务隔离级别
    • mysql索引的数据结构及介绍(b+树)
    • 两个队列实现一个栈
    • 依赖注入的方式
    • A依赖于B,B依赖于A,spring如何解决
    • 多个服务器的情况,session会不会串(我回答nginx,他说可以解决,答案是redis?)

    • 自我介绍,主要说项目
    • 围绕项目,挑一个说了项目的架构,为什么用SpringCloud,和dubbo对比
    • 微服务时怎么拆分的,微服务和传统单体式相比的优缺点
    • 项目中的难点
    • 五层网络模型说一下,HTTP属于哪一层,下面又用到那些层
    • TCP协议的特点说一说
    • 拥塞避免算法说一说
    • HTTP2.0了解吗
    • HTTPS的过程说一说
    • 非对称加密算法了解吗
    • 从输入URL到得到响应,中间的过程说一说
    • 操作系统进程、线程、协程说一说
    • 进程之间是怎么通信的
    • 求最短路径的算法说一说
    • 排序算法,快排的时间复杂度,为什么是不稳定的
    • TOPK问题(用大顶堆或者小顶堆),时间复杂度
    • 用1G的数据,但是只有128M的内存,要排序怎么排

    • JVM的内存划分,解释各个区域的作用,JVM为什么要这么分区
    • 分布式:paxos协议的leader选举
    • 两个字符数组求交集
    • jvm分区
    • redis介绍
    • tcpip协议介绍
    • 索引优化有哪些

    • 单链表序列化反序列化,结点中存字符串怎么办,类比网络中组包分包
    • 数据库表怎么设计,用户登录怎么保证安全性,数据库建索引了吗,为什么要把这些列作为索引, 索引建立顺序怎么确定
    • shiro中的token保存在什么地方
    • concurrenthashmap的场景:抢票
    • hibernate多对多是怎么查询的,hibernate多对多模型介绍下,数据库表索引设计顺序设计,为啥选择shiro
    • session怎么分布式存储(cookie,redis)
    • 并发打印foobar
    • 三个瓶身可以换一瓶酒,七个瓶盖可以换一瓶酒,初始x瓶酒,一共可以喝几瓶酒(考虑借瓶子、瓶盖再还回去)
    • atomiclong atomicadder
    • 随机生成1到一亿的数,怎么保证不重复(布隆过滤器),误报怎么办
    • hashmap concurrenthashmap(1.7 1.8 多线程扩容死循环 put的位置是NULL就用CAS插入,如果是forward就参与扩容,最后加syn锁)

    • Hashmap底层结构(1.7 1.8)concurrenthashmap怎么保证高效地操作(https://blog.csdn.net/qq_36520235/article/details/82417949)
    • 线程池优点、线程池的参数在什么场景下应该怎么配置、IO密集型线程跟CPU密集型线程的线程池参数怎么配置
    • 如何自定义一个注解(https://blog.csdn.net/xsp_happyboy/article/details/80987484)
    • 有没有接触过什么新技术(Docker)(https://zhuanlan.zhihu.com/p/62653543)(https://zhuanlan.zhihu.com/p/62653543)(https://www.cnblogs.com/linguoguo/p/10754756.html)
    • 有没有知道其他的数据库、非关系型数据库、分布式数据库(Redis)
    • Redis的使用场景,按你的理解如何设计一个秒杀系统(https://www.jianshu.com/p/d789ea15d060)
      1. 后台使用redis分布式数据库来保存秒杀的物品的信息,整体的服务架构可以使用 集群模式+主从模式,每个服务器分担一定的请求,并在主服务器出现故障后由哨兵节点及时切换到从服务器。
      2. 在此期间,不要将缓存中的数据与数据库进行同步,等时间过后再进行同步。
      3. 在数据持久化过程中,使用AOF方式,并可以把AOF持久化的时间间隔调整稍微长一点,减少持久化操作的次数。
      4. 在redis缓存中,设置要秒杀的物品的信息永不过期,防止出现缓存雪崩的问题,并使用布隆过滤器来过滤掉来自客户端的一些无效恶意请求
      5. 服务器处理请求时,使用消息队列,减轻服务器并发操作的压力
      6. 当整体某些下游服务出现故障时,对故障服务进行熔断,防止影响整体服务的性能; 当整体服务的负载过高时,可以适当对某些服务进行降级,减低整体服务的负载
    • 在低并发的场景下,如何保证redis与数据库的数据一致性
    • Session的持久化问题
    • 登录人数的统计问题
    • 用户关闭了网页,服务器知道,并让用户登出
    • 如果有了用户违反了一些操作,怎么禁用这些用户的任何操作和登录(禁止token)
    • AomicLong跟LongAdder的区别
    • 使用Random生成 1~1亿的数字到文件中,如何保证不重复、单线程和多线程环境下
    • Java1.8 1.9 1.10的区别 jdk源码中用到了哪些设计模式
    • Shiro的过程,如果这个人的角色权限信息修改了,session中这个人的信息应该怎么办
    • 用户登陆的过程(实质上就是一次浏览器请求页面的过程)
    • 如果项目的qps很高的话项目怎么设计(分布式)
    • Servlet知不知道 他的生命周期
    • 线程池的使用,应该注意哪些问题,原生的线程池有哪些隐患
    • Springboot为啥能提供服务(因为有tomcat) tomcat你知道有啥东西吗,或者能配置什么东西 项目怎么配置运行过程中的jvm一些信息
    • Cpu怎么排查,怎么查看进程的信息,有没有导出过dump文件,你能看到什么东西
    • 服务集群了解过没
    • Rpc是什么,java原生的rpc知不知道 rmi知不知道
  • 头条

    • 100瓶药水,其中只有一瓶有毒。给你一些老鼠,老鼠吃了之后24小时内会死亡。请问这24小时内,你需要最少多少只老鼠,可以把那瓶毒药试出来?
    • 交替打印ABC
  • 领英

    • 链表排序:自顶向上的归并排序
  • 腾讯

    • 一个长度一亿的数组,大量有序,少量无序,把数组改成链表怎么做
  • 猿辅导

    • 二叉树后序遍历
  • 美团

    • 自我介绍
    • 项目介绍
    • 项目中的难点
    • java基础:java的特性,构造方法能不能被重写,hashmap、hashtable、concurrenthashmap对比,string和stringbuffer对比
    • JVM垃圾回收算法
    • 有没有用过mysql、redis和消息中间件
    • 怎么用的消息中间件
    • TCP/IP的流量控制实现
    • 平时怎么学习的
    • 算法题:TOP K,无序数组找最小的K个

    • 项目,技术难点,怎么攻克的
    • 微服务怎么划分的,微服务之间怎么通信的
    • 为什么不用dubbo,为什么dubbo比springcloud速度快
    • 消息序列化用的什么版本
    • 编写sql时需要注意什么
    • stu表,有id、name、score字段,写sql找到成绩第二的
    • where a=x,b>y,c=z会不会走联合索引c,b,a(https://blog.csdn.net/weixin_42935902/article/details/96887763)
    • 怎么判断一个sql会不会走某个索引,explain的字段都有哪些
    • mysql优化器的策略(https://blog.csdn.net/hsd2012/article/details/51526733)
    • 怎么衡量一个系统设计得成不成功,负载、TPS都是什么意思
    • 平时线上服务出了问题,怎么排查
    • 平时都是用什么工具排查JVM问题
    • 编程:斜对角线打印二维数组

    • 虚拟内存解决了什么问题(说了半天,面试官都觉得没达到点子上)
    • 请求分页方式为什么以页未单位,这样的好处
    • 进程和线程区别
    • Java中的线程和操作系统怎么对应的
    • CPU为什么要进行进程上下文切换
    • CPU和内存存在速度差异,那么程序执行时怎么解决这个问题(以加法指令为例)
    • CPU负载高有哪些原因,为什么FullGC的时候负载就高,CPU负载高本质是什么导致的
    • Servlet了解吗,它的生命周期是什么
    • SpringMVC比以往使用Servlet开发优势再哪里,什么是MVC,Model具体指什么,为什么需要Model
    • Dubbo原理,把你知道的说下
    • 最近在看什么书
    • 你技术和性格上的优缺点有哪些

    1.jvm分区 2.redis如何处理重复请求(比如你淘宝下单,你按了很多下,你是不是收到了重复请求,但是你单只有一个,所以怎么处理呢,我说redis里有set,每个订单下单都是唯一值,查看是否存在,然后就问我redis如何设定唯一值的命令,我这个不记得了,我查了下好像最好用上redis的锁…)(我觉得是set (key value nx ex)然后value保证唯一) 3.elasticsearch(这个是我自己简历的,你们没有就不用管) 4.mysql锁的概念,以及Mysql什么时候出现死锁,如何解决。 5.描述下二分查询。 6.算法题,删除字符串中出现字符出现最少的字符。

    • spring组件,mvcc,es,solr的索引表结构

网上的面经

  • 牛客

    https://www.nowcoder.com/discuss/356120

    集合

    • ArrayList与LinkedList的实现和区别
    • HashMap:了解其数据结构、hash冲突如何解决(链表和红黑树)、扩容时机、扩容时避免rehash的优化
    • LinkedHashMap:了解基本原理、哪两种有序、如何用它实现LRU
    • TreeMap:了解数据结构、了解其key对象为什么必须要实现Compare接口、如何用它实现一致性哈希

    常见问题

    • hashmap如何解决hash冲突,为什么hashmap中的链表需要转成红黑树?
    • hashmap什么时候会触发扩容?
    • jdk1.8之前并发操作hashmap时为什么会有死循环的问题?
    • hashmap扩容时每个entry需要再计算一次hash吗?
    • hashmap的数组长度为什么要保证是2的幂?
    • 如何用LinkedHashMap实现LRU?
    • 如何用TreeMap实现一致性hash?

    线程安全的集合

    • Collections.synchronized:了解其实现原理
    • CopyOnWriteArrayList:了解写时复制机制、了解其适用场景、思考为什么没有ConcurrentArrayList
    • ConcurrentHashMap:了解实现原理、扩容时做的优化、与HashTable对比。
    • BlockingQueue:了解LinkedBlockingQueue、ArrayBlockingQueue、DelayQueue、SynchronousQueue

    常见问题

    • ConcurrentHashMap是如何在保证并发安全的同时提高性能?
    • ConcurrentHashMap是如何让多线程同时参与扩容?
    • LinkedBlockingQueue、DelayQueue是如何实现的?
    • CopyOnWriteArrayList是如何保证线程安全的?

    I/O

    • 了解BIO和NIO的区别、了解多路复用机制

    常见问题

    • 同步阻塞、同步非阻塞、异步的区别?
    • select、poll、eopll的区别?
    • java NIO与BIO的区别?
    • reactor线程模型是什么?

    并发

    • synchronized:了解偏向锁、轻量级锁、重量级锁的概念以及升级机制、以及和ReentrantLock的区别
    • CAS:了解AtomicInteger实现原理、CAS适用场景、如何实现乐观锁
    • AQS:了解AQS内部实现、及依靠AQS的同步类比如ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等的实现
    • ThreadLocal:了解ThreadLocal使用场景和内部实现
    • ThreadPoolExecutor:了解线程池的工作原理以及几个重要参数的设置

    常见问题

    • synchronized与ReentrantLock的区别?
    • 乐观锁和悲观锁的区别?
    • 如何实现一个乐观锁?
    • AQS是如何唤醒下一个线程的?
    • ReentrantLock如何实现公平和非公平锁是如何实现?
    • CountDownLatch和CyclicBarrier的区别?各自适用于什么场景?
    • 适用ThreadLocal时要注意什么?比如说内存泄漏?
    • 说一说往线程池里提交一个任务会发生什么?
    • 线程池的几个参数如何设置?
    • 线程池的非核心线程什么时候会被释放?
    • 如何排查死锁?

    JVM

    • GC:垃圾回收基本原理、几种常见的垃圾回收器的特性、重点了解CMS(或G1)以及一些重要的参数
    • 内存区域:能说清jvm的内存划分

    常见问题

    • CMS GC回收分为哪几个阶段?分别做了什么事情?
    • CMS有哪些重要参数?
    • Concurrent Model Failure和ParNew promotion failed什么情况下会发生?
    • CMS的优缺点?
    • 有做过哪些GC调优?
    • 为什么要划分成年轻代和老年代?
    • 年轻代为什么被划分成eden、survivor区域?
    • 年轻代为什么采用的是复制算法?
    • 老年代为什么采用的是标记清除、标记整理算法
    • 什么情况下使用堆外内存?要注意些什么?
    • 堆外内存如何被回收?
    • jvm内存区域划分是怎样的?

    Mysql

    • 事务隔离级别、锁、索引的数据结构、聚簇索引和非聚簇索引、最左匹配原则、查询优化(explain等命令)

    常见问题

    • Mysql(innondb 下同) 有哪几种事务隔离级别?
    • 不同事务隔离级别分别会加哪些锁?
    • mysql的行锁、表锁、间隙锁、意向锁分别是做什么的?
    • 说说什么是最左匹配?
    • 如何优化慢查询?
    • mysql索引为什么用的是b+ tree而不是b tree、红黑树
    • 分库分表如何选择分表键
    • 分库分表的情况下,查询时一般是如何做排序的?

    Redis(或其他缓存系统)

    • redis工作模型、redis持久化、redis过期淘汰机制、redis分布式集群的常见形式、分布式锁、缓存击穿、缓存雪崩、缓存一致性问题

    常见问题

    • redis性能为什么高?
    • 单线程的redis如何利用多核cpu机器?
    • redis的缓存淘汰策略?
    • redis如何持久化数据?
    • redis有哪几种数据结构?
    • redis集群有哪几种形式?
    • 有海量key和value都比较小的数据,在redis中如何存储才更省内存?
    • 如何保证redis和DB中的数据一致性?
    • 如何解决缓存穿透和缓存雪崩?
    • 如何用redis实现分布式锁?

    中间件、存储、以及其他框架

    • Spring:bean的生命周期、循环依赖问题、spring cloud(如项目中有用过)、AOP的实现、spring事务传播

    • java动态和cglib动态的区别(经常结合spring一起问所以就放这里了)
    • spring中bean的生命周期是怎样的?
    • 属性注入和构造器注入哪种会有循环依赖的问题?

    https://www.nowcoder.com/discuss/368408?type=2&order=4&pos=5&page=1

    ZooKeeper

    • CAP定理
    • ZAB协议
    • leader选举算法和流程

    Redis

    • Redis的应用场景
    • Redis支持的数据类型(必考)
    • zset跳表的数据结构(必考)
    • Redis的数据过期策略(必考)
    • Redis的LRU过期策略的具体实现
    • 如何解决Redis缓存雪崩,缓存穿透问题
    • Redis的持久化机制(必考)
    • Redis的管道pipeline

    Mysql

    • 事务的基本要素
    • 事务隔离级别(必考)
    • 如何解决事务的并发问题(脏读,幻读)(必考)
    • MVCC多版本并发控制(必考)
    • binlog,redolog,undolog都是什么,起什么作用
    • InnoDB的行锁/表锁
    • myisam和innodb的区别,什么时候选择myisam
    • 为什么选择B+树作为索引结构(必考)
    • 索引B+树的叶子节点都可以存哪些东西(必考)
    • 查询在什么时候不走(预期中的)索引(必考)
    • sql如何优化
    • explain是如何解析sql的
    • order by原理

    JVM

    • 运行时数据区域(内存模型)(必考)
    • 垃圾回收机制(必考)
    • 垃圾回收算法(必考)
    • Minor GC和Full GC触发条件
    • GC中Stop the world(STW)
    • 各垃圾回收器的特点及区别
    • 双亲委派模型
    • JDBC和双亲委派模型关系

    Java基础

    • HashMap和ConcurrentHashMap区别(必考)
    • ConcurrentHashMap的数据结构(必考)
    • 高并发HashMap的环是如何产生的
    • volatile作用(必考)
    • Atomic类如何保证原子性(CAS操作)(必考)
    • synchronized和Lock的区别(必考)
    • 为什么要使用线程池(必考)
    • 核心线程池ThreadPoolExecutor的参数(必考)
    • ThreadPoolExecutor的工作流程(必考)
    • 如何控制线程池线程的优先级
    • 线程之间如何通信
    • Boolean占几个字节
    • jdk1.8/jdk1.7都分别新增了哪些特性
    • Exception和Error

    Spring

    • Spring的IOC/AOP的实现(必考)
    • 动态代理的实现方式(必考)
    • Spring如何解决循环依赖(三级缓存)(必考)
    • Spring的后置处理器
    • Spring的@Transactional如何实现的(必考)
    • Spring的事务传播级别
    • BeanFactory和ApplicationContext的联系和区别

    其他

    • 高并发系统的限流如何实现
    • 高并发秒杀系统的设计
    • 负载均衡如何设计

    补充

    另外还会考一些计算机网络,操作系统啊之类的。像消息队列,RPC框架这种考的比较少。计算机网络就是分层啊,tcp/udp啊,三次握手之类的。操作系统就是进程与线程啊,进程的数据结构以及如何通信之类的。数据结构的排序算法也比较常考,考的话一定会让你手写个快排。剩下的算法题就靠LeetCode的积累了。其实非算法岗考的算法题都蛮简单的,很多题完全就是考察你智力是否正常,稍微难点的涉及到一些算法思想的按照LeetCode题目类型的分类,每种题做一两道基本就能完全应付面试了。

    https://www.nowcoder.com/discuss/342084?type=2&order=4&pos=2&page=1

    • 重写equals()是否需要重写hashcode(),不重写会有什么后果
    • 自旋锁和阻塞锁的区别
    • 公平锁和非公平锁的区别
    • jdk中哪种数据结构或工具可以实现当多个线程到达某个状态时执行一段代码
    • 栅栏和闭锁的区别
    • 如何使用信号量实现上述情况
    • 新生代和年老代的GC算法分别是什么
    • 标记清除和标记整理的区别
    • 了解过CMS收集器吗
    • 解释HTTPs,HTTPs为什么要用对称加密+非对称加密,相对于只使用非对称加密有什么好处
    • 给定一个表,其中有三列(员工名称,工资,部门号),找出每个部门工资最高的员工
    • LeetCode 863 二叉树中所有距离为K的结点
    • 用过哪些Java开源框架
    • 讲一讲对Spring的理解
    • 看过IOC和AOP的源码吗
    • 它们底层是如何实现的
    • 用过其他什么框架
    • 了解过分布式或者微服务的开源框架吗
    • 讲一讲对分布式系统模型的理解
    • 分布式系统中有一个节点宕机怎么办
    • 分布式系统如何实现负载均衡
    • MySQL和Oracle数据库有哪些不同
    • 数据库有哪些锁
    • 表锁和行锁的区别
    • 哪些场景需要加表锁
    • 插入一条数据需要加什么锁
    • 分布式数据库如何保证数据可靠性
    • 了解过MySQL的主从复制吗

    https://www.nowcoder.com/discuss/372983

    • 如何实现延时任务
    • 如何实现限流
    • 线程池的参数
    • epoll和poll的区别
    • 如何自己实现内存分配和管理?不太懂,然后说了jvm的垃圾回收机制
    • Redis的key过期策略
    • 缓存穿透和缓存雪崩
    • 分布式锁
    • 如何实现全局的id生成策略
    • 悲观锁和乐观锁
    • 写个producer-consumer
    • 两线程交替打印
    • 线程模拟100分钱随机分给20个人,每个人最少分配到2分钱
    • MVCC
    • HTTPS
    • ElasticSearch的查询过程
    • Kafka如何保证高可用
    • Reids的集群和选主
    • 分布式一致性算法
    • 如何实现定时关单

    https://www.nowcoder.com/discuss/382503

    • 数据库的三大范式和约束类型
    • 线程生命周期

    https://www.nowcoder.com/discuss/382603

    • 知道MySQL插入和查询分别用的是什么锁吗?
    • 引用计数法与GC Root可达性分析法区别
    • CAS机制会出现什么问题
    • RabbitMQ了解吗?丢失消息,重复消费问题怎么处理?

    https://www.nowcoder.com/discuss/382329

    • 如何衡量一个哈希算法的好坏
    • 哈希解决冲突的4种方法
    • cookie和session的生命周期
    • 集群中的session会遇到什么问题,有什么解决方案呢
    • 常量过多会导致什么问题
    • JDK8用了哪种回收器,内存空间管理和以前相比有哪些提升(Parallel Scavenge + Parallel Old)
    • 构造函数的加载顺序,多个构造函数先加载哪一个
    • group by中使用的having是用来干啥的
    • 服务治理介绍一下
    • 远程调用需要从注册中心代理吗
    • 如果注册中心代理的话并发量太大不会承受不了,怎么解决

    https://www.nowcoder.com/discuss/382110

    • bio. nio
    • linux五种io模型
    • poll 和 epoll 的区别
    • synchronized底层原理
    • AQS
    • 聚簇索引非聚簇索引
    • timewait和closewait状态含义

    https://www.nowcoder.com/discuss/381858

    • synchronized用在静态和非静态方法的区别

    https://www.nowcoder.com/discuss/381849

    • jre和jdk的区别
    • 如何理解僵尸进程,如何解决僵尸进程

    https://www.nowcoder.com/discuss/381726

    • 结合数据库三大范式聊聊,项目的表设计
    • redis为什么快?在多核cpu下redis单线程浪费?
    • redis击穿
    • redis与mysql数据同步
    • redis集群
    • redis分布式锁的实现(https://www.cnblogs.com/williamjie/p/9395659.html)
    • 海量数据,找重复数量前几的数据
    • 写个死锁
    • 处理日志,获取error的日志,去重,排序(本意是让用shell写的,但我不会,就用Java写了)
    • 写个LRU
    • 泛型、通配符区别
    • 红黑树为什么插入效率高
    • MySQL执行SQL的流程
    • 选择排序原理,时间、空间复杂度
    • 访问量太大redis支撑不住怎么办
    • 爬虫用的是什么?有用框架吗?有用多线程爬虫吗?
    • 用过哪些SpringCloud组件
    • redis数据结构
    • redis zset set区别
    • redis在增删改查时为什么单线程 还那么快?io模型?
    • MYSQL日志种类 undolog redolog分别是做什么的?(https://www.jianshu.com/p/57c510f4ec28)
    • MYSQL如何实现MVCC(https://blog.csdn.net/nmjhehe/article/details/98470570)
    • MYSQL优化,Explain 有哪些信息

    https://www.nowcoder.com/discuss/380853

    • 线程安全的单例模式
    • 类加载时机
    • 虚拟内存,内存爆了怎么办
    • https能讲一下吗(https://www.jianshu.com/p/14cd2c9d2cd2)
    • 数据库聚集索引和非聚集索引能讲一下吗
    • read commited隔离级别解决什么问题,通过什么实现(https://blog.csdn.net/fxkcsdn/article/details/82694357)
    • 数据库行锁是互斥锁还是其他还是什么类型的锁呢,读操作会阻塞吗(https://blog.csdn.net/arkblue/article/details/53895150)

    https://www.nowcoder.com/discuss/164967

    • 如何判断一颗二叉树是另一颗二叉树的子树
    • tcp如果在发送数据的时候服务器宕机了会怎么样,服务器又好了又会怎么样呢
    • 用过缓存,Redis吗,用过分布式吗,比如kafka或者dubbo

    https://www.nowcoder.com/discuss/219099

    • 大量用户产生很多消息,消息队列怎么处理
    • 消费者消费不完怎么处理

    https://www.nowcoder.com/discuss/362693

    • 线程池(具体参数,拒绝策略,减少线程的机制,具体实现类及对应的阻塞队列,阻塞队列有什么特点,为什么用这个阻塞队列,线程复用的原理)(https://blog.csdn.net/testcs_dn/article/details/78083966)
    • JVM(对象是否可回收的判断条件,怎么判断,回收算法,垃圾回收器的类别及特点,担保机制)
    • JAVA内存模型
    • 线程之间的通信方式,通过volatile,synchronized,Lock的实现类那些,结合内存模型去讲。
    • MyBatis、spring、springboot相关(面试题较常见)
    • Linux常用命令
    • redis的数据结构那些,讲了skiplist、ziplist、sds等,结合使用场景说了下(https://blog.csdn.net/chenssy/article/details/89599232)

    https://www.nowcoder.com/discuss/370072

    • transient关键字的作用
    • synchronized关键字加的地方,有什么区别,底层实现
    • 算法:两个数值原地交换值,不能使用第三个变量(https://blog.csdn.net/qq_39411607/article/details/80989996)

    https://www.nowcoder.com/discuss/198399

    • 事务传播
    • 变量的初始化顺序(https://www.zhihu.com/question/49196023)

    https://www.nowcoder.com/discuss/370435

    • 写题:由于记账错误,给定的一个正整数序列里面,有两个数字重复了,同时缺少了一个数字。 要求写一个函数,找出序列中重复的数字和缺少的数字。(set、异或) 例如: 输入:[1, 5, 2, 2, 3] 输出:[2, 4] 附加: 如果题目为缺少x个数字,并且输入序列可能有不匹配的重复和缺少项

    • 进程线程协程(https://blog.csdn.net/fadbgfnbxb/article/details/88787361)

    https://www.nowcoder.com/discuss/192690

    • 逻辑题,25匹赛马🐎,5条赛道,求前三快的马(https://www.nowcoder.com/questionTerminal/e07d8e0df93b4f6b93a3fadbe72f2c7c)

    https://www.nowcoder.com/discuss/98120

    • 了解过其他AOP包:ASPECTJ么
    • start之后线程就会马上调用吗
    • 了解过乐观锁和悲观锁么,如何自己实现一个乐观锁
    • hashMap高并发下的缺陷?链表为什么会成环?(https://blog.csdn.net/wthfeng/article/details/88972137)
    • 类隔离
    • 包冲突
    • 有了解过RPC么
    • 了解过一致性Hash么?
    • Java1.8做了什么优化,新特性

    https://www.nowcoder.com/discuss/238370

    • 反射的作用,反射相关的类(https://snailclimb.gitee.io/javaguide/#/docs/java/basic/reflection)
    • 假设一个场景,支付系统和订单系统,支付失败后订单系统怎么知道失败(感觉是分布式事务的一致性,我开始问他是两个系统吗?是分布式吗?他也不回答我,后面复述一遍问题我又问了一遍分布式事务的一致性,他才说是的)(https://www.cnblogs.com/luxiaoxun/p/8832915.html)

    https://www.nowcoder.com/discuss/258249

    • 反射的原理及应用
    • spring四种事务的实现方式(https://blog.csdn.net/chinacr07/article/details/78817449)
    • cap和base
    • 问了几个设计模式 工厂 策略 *** 观察者 适配器 桥接等,jdk里面用到了哪些说说
    • 分布式秒杀如果不用mq怎么做?我说直接去掉mq用异步➕分布式事务,大佬说不好,还有吗?
    • 统计用户url访问次数,我说用拦截器存redis,大佬问java有没有提供这种系统或者工具直接用?我说令牌桶也行,大佬没说话

    https://www.nowcoder.com/discuss/89956

    • 字符串连接的几种方法和区别(https://www.cnblogs.com/lujiahua/p/11408689.html)
    • 自己实现线程池如何实现
    • 如何防止重复买
    • String类为什么要设计为final(https://www.zhihu.com/question/31345592)

    https://www.nowcoder.com/discuss/381334

    • JDBC
    • synchronized和lock底层实现,区别

    https://www.nowcoder.com/discuss/87868

    • Java的线程池说一下,各个参数的作用,如何进行的。
    • Redis讲一下
    • 分布式系统的全局id如何实现。用zookeeper如何实现的呢,机器号+时间戳即可。
    • 分布式锁的方案,redis和zookeeper那个好,如果是集群部署,高并发情况下哪个性能更好。
    • kafka了解么,了解哪些消息队列。
    • 反射的作用是什么
    • 了解哪些中间件,dubbo,rocketmq,mycat等。
    • dubbo中的rpc如何实现。
    • 自己实现rpc应该怎么做
    • dubbo的服务注册与发现。

    https://www.nowcoder.com/discuss/244392

    • Mybatis是如何做到动态sql解析
    • Mybatis是如何实现xml文件与实体类的映射
    • java中反射获取到的属性和方法是存储在什么地方(字节码、方法区)
    • 反射如何获取方法上的注解(https://www.cnblogs.com/a591378955/p/8350499.html)
    • 注解和接口的区别(https://www.cnblogs.com/linshenghui/p/11213867.html)
    • Redis中的命令(https://www.runoob.com/redis/redis-keys.html)(https://www.php.cn/faq/417108.html)

    https://bbs.byr.cn/#!article/ParttimeJob/856659

    JAVA研发工程师

    • 希望你是2021年应届毕业生(校招)
    • 扎实的java编程基础(java语法原理,java容器原理,jvm原理(jvm调优加分),java并发(越深越好)),熟悉java开发体系,如果能有一定的项目开发经验那就更好了。
    • 表达问题思路清晰,良好的沟通能力与技术学习能力 (后面项我列举了最好了解一下的知识)
    • 有过用mysql等数据库使用经验
    • 了解http,操作系统,计网等基础知识(我另一篇推荐知识的博客有这些,大概简单的勉强够用)
    • 了解一些简单的设计模式(常见的那些最好看过一些源码,实现过一些,项目中用到过并有自己的理解)
    • 了解SSM,SpringBoot 等框架加分(建议初学以spring,spring boot,mybatis框架开始,这是现在很多公司的主流架构)
    • 了解WEB开发相关技术,如HTML,CSS,JavaScript,ajax 等加分(优先度不高,安心安心)
    • 了解分布式架构加分(缓存建议学一下redis,消息队列可以学一下kafka,rocketmq,分布式事务了解一些,分布式锁可以学一下zookeeper,rpc可以看dubbo)
    • 了解高可用架构加分(比如看看Hystrix,优先级不高~ )
    • 了解微服务加分(公司项目现在设计的很轻量级,一般都是微服务架构的,了解一下有好处,这是未来所有公司架构的升级方向)

    • 热点数据请求太多,redis负载均衡全都hash到一个节点上,如何处理(https://www.cnblogs.com/rjzheng/p/10874537.html)

    https://www.nowcoder.com/discuss/181259

    学习历程

    18/10月: 那时候学长发布了一些日常实习的内容,这时候我才发现自己什么都不会。开始慢慢准备找实习的事。我当时很纠结,不知道自己应该从事什么样的方向。学校实验室的项目是C++,但是最后还是放弃了,因为我发现岗位太少了。于是转而走向了Java后台的路线,当时我只有一点点语法的基础。

    18/11月:开始补Java语法的基础,说实话我没有去啃《Think in Java》这类厚的书,我看的第一本是《Effective Java》,不出意料,看的第一遍并不懂,不过几个月后再看一遍是真的收获很大。学校网络原理开的晚,我便把网络原理自学了一下,看了《自顶向下》这本书,把最常考的应用层、传输层、网络层看了一遍。

    18/12月:我开始发觉缺少实践了,于是开始走了Web后台的方向,当然也走了不少弯路。建议路线是servlet规范了解后,直接上Spring Boot,然后慢慢了解Spring MVC的原理,IOC/AOP的原理,以及掌握一门ORM框架。也开始看Java的并发,《艺术》看了两遍,《实战》看了一半。《Java虚拟机》看了一遍。

    19/1月:我开始系统地学习MySQL与Redis,《MySQL技术内幕》和《高性能MySQL》各看了一小部门。重点看事务、InnoDB存储引擎、索引、热备、主从以及分片。Redis建议实践最重要,做分布式锁、做缓存,自己要试着去敲代码,然后慢慢就熟练了。当时《Redis设计与实现》也看了四分之三。然后也开始复习了HTTP的内容,《图解HTTP》看了一遍。

    19/2月:我开始跟着视频做项目。自己改编了,换了技术栈做了原创的web项目。项目需要有亮点才能打动面试官,我推荐把《大型网站技术架构》看一遍,这本书很好,一点都不难懂,就像看小说一样。将里面的部分内容复现一遍,你的项目也有闪光点了。买了极客时间的虚拟机课,看了一部分,补充下JVM的知识。

    19/3月:我开始细读源码,Java的容器、JUC的部分源码、Spring的部分实现,看别人的博客对照着读会收获很多。这时候也开始陆陆续续面试了,最重要的就是复盘,了解自己的不足,并且弥补。之前准备的过程中也再陆陆续续写博客。到3月底时,一共写了51篇。操作系统、分布式等知识我有一直对照着CyC大佬的Github以及其他大佬的博客看,收获很大。

    https://www.nowcoder.com/discuss/238131

    面的是阿里口碑,总共38分钟,小哥哥人很好,但是我感觉我好菜

    1.我看你是大数据与网络安全实验室,我们不招安全呀。 2.Java基础,实现多线程的方法,线程池有哪些,怎么扩容。 3.三次握手,四次挥手 4.设计模式(我说只熟悉单例和工厂,他说那算了) 5.Mysql索引讲一讲 6.redis介绍一下 7.缓存击穿,穿透,雪崩怎么处理,怎么预防 8.mysql和redis怎么保证数据一致 9.kafka怎么保证消息不丢失 10.springmvc流程讲一下 11.redis锁机制,怎么处理并发(我说这个不太熟,mysql的锁机制比较熟,小哥哥说那你讲一下) 12.让你设计一个高性能的购物网站,你怎么设计,从前端到后台,到数据库 13.你有什么想问我的

    https://www.nowcoder.com/discuss/240122

    前言 8.29投的内推,8.31面我了,还是个周六,果然是福报,我太难了。 不过面完我再去官网看,我的简历还是在评估中,不知道怎么进的流程吧,我笔试也一个没做(没通知我),真是奇了怪了。 口碑部门Java岗。 抱着玩一玩的心态投的简历,看了这里那么多大佬都被刷了,我就没抱希望,本着查漏补缺,啊不,本着女娲补天的补知识的心态去面试的。 面试时间28分钟,发挥得不好。 概述 主要问了以下几个方面 1、自我介绍 2、Java反射 3、类加载器 4、HashMap 5、数组链表 6、锁 7、数据库 8、算法 正文 〇 Java反射 上手就问你了解反射么,讲讲吧?我真不知道从哪里讲起。 然后问反射的private的访问,关于是否能访问私有成员变量 那private还有什么用 反射的优缺点 反射的使用场景 反射怎么使用 〇 类加载器 讲讲类加载器吧。我,,,我真不知道从哪里讲,就把几个类加载器说了一下 〇 HashMap HashMap的数据结构怎么样的,我就说了一下 数组和链表这种,不知道是不是他的意思 key可否null,为什么 是否线程安全,否则会发生什么情况 〇 数组链表 ArrayList的优缺点 数组和链表的区别 〇 锁 类锁和对象锁的不同 〇 数据库 MySQL索引的机制,我说的是B+,不知道是不是他的意思 为什么要用索引,好处是?坏处是? 简单介绍一下MySQL的事务。这里我又好难了,又不知道回答的方向是什么。于是就说了事务的隔离,MySQL的引擎 数据库回滚的原理,这个我还真不怎么会 〇 算法 无环链表是否相交 劝退算法:梯度下降算法给我讲讲,我:?????????????? 后记 全程体验不太好,有时候有点尬聊,问题之间双方经常有沉默,我get不到他想的方面,所以没有半小时就over了,也没问我你有什么要问的,说了句,谢谢你就到此结束了。我:???? 不管了不管了,体验不是很好,也没想着进二面,就当做复习和预习吧。

  • Zoom

    https://www.nowcoder.com/community/comment/detail/1051?action=0&notEmpty=false&page=1

    • 进公司后,HR 拿来一道笔试题,主要是线程安全方面的知识,简单的如 StringBuffer 和 StringBuilder 的区别,一般的有死锁怎么形成的,怎么解决死锁,HashMap,ConcurrentHashMap,LinkedHashMap的区别,SpringMVC的运行原理,难的有分布式锁怎么实现,BIO 和 NIO区别,除了难的题超出了我的范围其他的对我来说都比较easy了。只要JVM,多线程方面的知识准备充分,笔试面试都没问题。下面讲讲面试情况: 技术官进来,先自我介绍,问 new 一个对象,JVM 里面都干了啥,先是加载,验证,准备,解析,初始化啥的。后面问 volatile 关键字,从原子性,可见性,指令重排三个方面说了,又问 Synchronized 关键字在 1.6 做了哪些优化,从锁消除,锁粗化,偏向锁,轻量级锁,重量级锁解锁了一遍。 再问 ReentrantLock 和 Synchronized 的区别,从可中断,是否公平锁,条件锁方面阐述,延伸到 AQS,CAS 等。后面打算问我 IO 和 MySQL 方面的知识,我没经验,就说不知道,面试官也就直接跳过了。除了这两个,我几乎百分百答完了,基本达到甚至超过了面试官的知识准备。 后面是技术经理吧,进来就说刚才的反馈,是你不熟悉 MySQL,那么你平时用什么DB,答Oracle,然后就问你在公司从事什么角色,我是技术组长,那他说你举几个例子吧,我就举了两个,他也没深问,后面就锁,问了 AQS 的原理。再就没怎么问了。然后问我面什么职位,怎么投的简历。问我有什么问题,我当时尿急,直接说要先上下厕所,囧。回来后随便聊了下他们职位的工作内容,问了他们系统的 QPS,也没怎么仔细地说,再问项目都用了哪些技术,讲了些常规的技术。 总体感觉下来,里面的技术实力都不太强,也就一般互联网公司的技术实力,不过也算是中上了,不是什么公司都有独特的环境,获取到大流量,大数据量操练。

    • 流程的话,从学校投的简历,之后做了一个在线笔试。笔试比较考察基础吧,编程题就一题,也不是很难,刷刷算法题应该都做出来。 没有电面,去公司直接面的,公司环境很好,整体体验很好。下午去早了,前台小姐姐带我去的会议室(很nice的小姐姐还给我一杯水缓解压力),说面试官还在睡觉呢,以为要等很久。结果马上就来了,还打印了我的简历(包里彩打的简历表示毫无用处)之后就是正常面试流程,主要根据简历,考了数据结构,网络协议,数据库,设计模式等。大概50分钟,hr先来聊了一下公司现状岗位情况以及人生理想。然后说主管可以再面一下,然后就被问了GC,类加载,spring源码,算法源码,hash,网络和加密算法什么的,回答了大概,spring源码还没准备过。。。但是主管人也很好,一直鼓励你。让我在凉凉边缘多次拯救。 进公司就不用多说了,导师很牛,培训很多,制度也很完善,没有加班,人文关怀也特别优秀,节假日会有礼物,日常还有零食,来zoom不吃亏!(在职舔狗,性感评价)

    https://www.nowcoder.com/discuss/158738

    一面

    大概面了30分钟,面试官估计是以后的同事

    • 自我介绍
    • 问了问读了什么书
    • 围绕项目问了一些实现的问题
    • Redis场景题:
      • 如果有一个for循环,不停地进行SET操作,且每次SET的key不一样,可能会循环上万次。这样的话应该怎么优化(redis管道流执行命令,不会返回每次执行的结果,主要用于批量执行命令)(https://www.jianshu.com/p/84b655a55bf5)
      • 用Redis做缓存的时候,说说详细流程,怎么防脏读
    • Spring的AOP
    • Spring怎么实现事务,事务有哪些隔离级别
    • Java基本类型的封包拆包
    • 举个线程不安全的例子
    • 关于线程的使用的场景题
    • CAS的具体实现
    • MySQL有哪些索引,有什么区别
    • SQL语句调优会吗,有哪些调优方式
    • 关于我们公司,有什么想问我的吗

    二面

    面试官开会去了,等了大概20分钟,面了50分钟左右

    • 自我介绍
    • 继续聊项目
    • 说了项目的表结构
    • 项目部分功能的具体实现
    • 提了一些项目上可能会遇到的问题,问我怎么解决
    • 感觉收获很大,很多自己以前没有考虑
    • Java8有什么新的特性
    • Java怎么具体实现的ThreadLocal
    • 线程有哪些状态
    • 讲讲线程池,都有哪些参数
    • 说说常用的线程同步的方法
    • 浏览器请求URL到返回页面的详细过程(如果是localhost呢)
    • 三次握手、四次挥手的详细过程
    • 讲讲Java都有哪些锁,他们有什么区别
    • 说说你会什么容器,然后挑了HashMap和TreeMap问
    • 说说你会什么并发容器,挑了ConcurrentHashMap的具体实现问
    • Web后台一些功能实现的场景题
    • 项目用了Spring Boot,问了问内嵌的服务器还有做了哪些配置
    • AOP有什么用?有些名词你知道吗?
    • 说说jdk动态***和CGLIB有什么区别
    • 对什么设计模式比较熟?挑了适配器、装饰器和***模式问
    • 用过Spring Cloud吗(不会,但谈了谈Dubbo和ZooKeeper)
    • 会前端吗,有了解过什么
    • 打算做后台什么方向
    • 关于我们公司有什么想问我的吗

    三面(HR)

    后来才发现,来的是人力资源的经理(哦豁)

    • 哪里人
    • 对工资有什么要求吗
    • 打算读研吗
    • 有没有女朋友
    • 每周可以保证来几天
    • 什么时候可以来上班
    • 聊完后,去和Boss打了招呼后,就送我离开公司了

反问

https://www.zhihu.com/question/19640623?isn=1

  • 您详细能告诉我我如果被录用了,我会负责一些工作么?
  • 我会接受什么样的培训呢?
  • 您觉得胜任这个职位的人什么品质最重要?
  • 您觉得贵公司未来五年的发展方向是什么?
  • 您能告诉我您为什么喜欢在这工作么?
  • 您能形容一下这里的工作氛围么?
  • 能告诉我现在公司/所处部门面临最大机遇(或挑战)是什么吗?
  • 这个职位的发展路径一般是怎么样的呢?