题目汇总
java基础
- Java map底层实现,HashMap,ConcurrentHashMap的1.7和1.8的不同和具体实现
- 1.8版本的concurentHashMap在单线程下和HashMap效率有什么区别。
- sorted set底层?
- HashMap多线程插入是否线程安全(各自Key不相同)
- 什么是一致性哈希 https://www.jianshu.com/p/49e3fbf41b9b
- Java中pv操作实现时用的类 semaphore
- Synchronize的内部实现,可以用什么代替。其标注不同方法有什么区别。 https://blog.csdn.net/qq_32924343/article/details/79614775
- java中char能存全部中文(表情呢)吗 https://www.jianshu.com/p/4c29d96d5e06?utm_campaign
- java元注解 https://blog.csdn.net/lkp1603645756/article/details/84072600
- HashMap是不是线程安全的,为什么不安全,会出现哪些问题,
扩容出现环死循环?死循环cpu的状态是怎么样的?占用率100%吗?那此时其他线程能不能使用cpu?cpu核数和占用率什么关系?cpu100%对整个服务器有什么影响? - java函数值传递还是引用传递 https://baijiahao.baidu.com/s?id=1614769568984126810&wfr=spider&for=pc
- ThreadLocal是如何实现的? https://blog.csdn.net/sonny543/article/details/51336457 https://www.jianshu.com/p/ee8c9dccc953
- java线程池的具体参数,最长空闲等待时间的具体情况,释放线程的过程,什么时候什么情况释放,释放时队列的情况是怎么样的。 https://www.cnblogs.com/cdf-opensource-007/p/8769777.html
- 为什么要用线程池?单核cpu有必要用线程池吗?
- 多线程和JUC,AQS、ReentrantLock、线程池、CountDownLatch、CyclicBarrier,和具体实现。CAS,ABA问题,cpu空转
- Atomic在高并发场景下有什么问题,缺点?
- volatile,作用,底层,lock 前缀的指令,多CPU的嗅探机制,多处理器下的缓存一致性协议
- 异常和error的区别,oom是error还是异常?什么东西分配在堆上和栈上?异常机制怎么理解?
- RMI怎么实现的?
- cglib和jdk的动态代理的实现原理?这两者之间性能的区别?
- 动态代理、反射生产的对象在jvm的哪里?会不会影响到永久代或者是8以后的元空间?
- java如何查看线程死锁
- servlet,filter
- 讲一下Collections.sort的实现方法: timsort
- list为什么有序,set为什么无序
- wait和sleep的区别,wait和await区别
- java中int和Integer的区别,为什么有了int还要有设计Integer
- 哈希函数作用及实现,以及和equals的关系
- 内存泄漏和溢出
- 堆的底层是如何实现的
- java层面上的异步和同步
- Lock是如何实现线程安全的?
- Java中的锁机制是如何实现的?有什么区别?
- hashmap为什么要在链表长度为8再变红黑树
- jndi和rmi
网络
- TCP三次握手,四次挥手。为啥要三次和四次?
- 很多close wait,为什么
- http与https区别(wireshark抓包),https可能出现不安全的地方。
- 打开一个url,会经历那些过程。类似的还有打开一个app到首页加载出来中间用到七层模型中的哪些协议?
- http状态码
- tcp如何保证安全可靠
- RPC框架和普通http有什么区别和优势? 基于Tcp封装还是http封装的。restfulAPI和RPC的区别
rpc是长连接吗?如果要传输一个特别大的文件 底层还是基于流吗? - Nio是一个什么IO模型?
- 拥塞控制 以及里面的算法?流量控制的协议
- Ping命令做了什么?ping是哪一个层的?基于什么协议?
- get和post区别,tcp和udp区别。DNS的分层结构。osi模型,各个层有哪些协议。IP地址的Regex
- 说一下tcp/ip协议?Java中server端怎么实现?
- http和tcp头部
- 长连接与短连接?如何知道这个数据包的顺序?
- cookie和session区别
- HTTP数据量很大,怎么发送
- CP server最多可以建立多少个TCP连接
- 查看某个端口的情况(使用情况,连接等)
- 以太网帧的格式 最小传输单元MTU的概念
- arp报文格式,ip/mac互查机制 arp缓存
- ip首部格式 ip分片(如何分片,如何保证顺序,接收端如何确认所有分片都到达,能否避免分片(传输层/应用层作限制)) 路由表
- icmp分为俩种,2种查询报文+5种差错报文
- tcp首部 三握、四挥、同时打开、同时关闭、半关闭
- tcp流量控制 滑动窗口、慢启动、拥塞避免、快速重传、快速恢复 超时重传(4个定时器)
- dns名字空间 指针查询(反向查找) dns缓存
- ftp 控制连接、数据连接 pasv/port俩种工作模式 各种指令和响应码 断电续传和匿名ftp
- http报文格式 请求头和响应头的各种字段 http状态码 https握手过程 摘要算法、数字签名、数字证书的原理
操作系统
- 进程通信,线程间通信的同步异步问题
- 进程线程区别
- 线程间通信的同步异步问题
- 进程中什么数据可以给线程共用,进程内存区域划分(数据区、代码区…),哪些是线程共享,哪些是线程独占
- 复制粘贴过程中操作系统做了些什么
- 说明一下缺页中断,虚拟内存,分页地址转换 内存抖动
- linux的fork指令对数据的拷贝是马上就拷贝的吗?linux看网络状况用什么 看日志用什么?
- 协程的好处 和线程的对比
- 物理地址与逻辑地址的概念,换算关系
- select/epoll原理
- 僵尸、孤儿进程如何处理
- linux常用指令
- 死锁产生条件,如何避免
- 进程创建和线程创建的底层实现
- 一个进程是不是可以创建无限数量的线程,线程的数量会受到什么限制,线程在内存中会占用什么资源
- 一个进程,有十个线程,其中一个线程fork后,子进程有几个线程
- 进程间通信和线程间通信的区别
- linux内核
- 五种io模型?阻塞/非阻塞,同步异步指什么?
算法
- 单链表翻转(递归、循环头插)
- 海量数据排序,如何在海量数据找最小的100条
- 一个long类型的数,让他整个位倒转,能不能只迭代8次完成
- 一个数组一个数只有一个其他数两个,找到单独的那个数(LeetCode原题)
- 一个数组有一个数超过一半,找到这个数(LeetCode原题)
- 红黑树的优缺点,红黑树与平衡树的区别,各自的应用场景
- 单链表快排
- 用 1到5的随机数生成器生成 1到7
- 编辑距离
- 青蛙跳台阶
- 简单实现一下LRU?如何优化?
- 二叉树俩个最远节点的路径长度
- 平衡二叉树,二叉搜索树,二叉排序树,二叉线索树。
- 本地化树及恢复
- 层序遍历二叉树 分行打印
- 通配符匹配
- 3sum
- 输出二叉树各层 首个节点
- 一个稳定的排序如何变为稳定的?在不改变原算法的前提下?
jvm
- Java内存溢出
- JavaGC(垃圾回收),Gc root,常用的垃圾回收算法,垃圾收集器,g1对stw如何优化?
- 哪些可以作为GCRoot?
虚拟机栈(栈帧中的本地变量表)中引用的对象
方法区中的类静态属性引用的对象
方法区中的常量引用的对象
本地方法栈中JNI(即Native方法)的引用的对象 - Java中有全局变量吗
- Java内存管理(栈,堆,方法区,程序计数区)
- java类变量的加载过程,父类静态变量和子类静态变量哪个先加载,int和long哪个先加载
- java中如何分配一个对象
- synchronized的锁的机制,自旋锁,可重入锁,偏向锁,轻量级锁、重量级锁,锁的膨胀过程
- jvm的内存布局(和jmm不同)和gc过程,jvm怎么调优,什么看gc的日志之类的
- 只对堆进行gc 这句话对不对 调用system.gc()马上就执行gc吗
- jvm动态分派
- java启动参数,java常用工具类
- 类加载机制,双亲委派模型
- 类是如何加载的,如何自己设计一个类加载器
数据库
- 事务的原理,ACID是如何保证的?
- 数据库三范式举例
- MySQL的事务类型了解吗?扁平事务、带有保存点的扁平事务、链事务、嵌套事务、分布式事务
- mysql事务的隔离级别,如何实现,隔离是为了什么
- mysql的引擎,索引的工作原理,为什么快,有哪些索引?
- Innodb和Myisam的区别?
- myisam为什么不支持事务?
- 覆盖索引
- 主键索引和非主键索引的区别,讲了聚集索引,然后问了索引访问的过程,
- 问了用聚集索引和不用的磁盘io访问次数的不同,组合索引的最左匹配原则?
- 高并发时b+树如何加锁。
- 一个sql查询慢,百万级别,单表,你觉得性能问题可能出在哪?
- 如果两表查慢,问题出在哪?
- Inner join 和left join 性能不同,inner join反而慢是为什么?
- Mysql和Redis最大的区别?
- mysql的文件系统,是怎么找数据的?
- 数据量特别大的时候 mysql会怎么去做
- 慢查询优化,如何合理建索引
- MYSQL 为什么用B 树不用红黑树
- InnoDB是如何实现聚集索引的?
- 乐观锁和悲观锁以及各自的适用场景。
- 如何在查询的时候不让改数据。select xx for update。
- 多个索引,mysql如何选择索引?
- 分页查询sql语句?插件?
- mycat用过吗?
框架
- Spring的bean的生命周期
- Spring的IOC和AOP知道吧,实现及原理?单实例无状态你怎么理解?
- SpringMVC和Servlet的区别
- SpringBoot 有什么好处,答一个好处就问是怎么实现这个好处的
- SpringBoot的自动配置如何实现的?
- SpringBoot相比于Spring框架有什么优势
- mybatis防止sql注入怎么实现
- Mybatis和hibernate的区别
- Redis为什么快,内存数据库、单线程、IO多路复用的epoll?
- redis的使用场景,和memrycache的区别
- Redis的设计思路,这么设计的好处是什么?Redis Cluster用过吗? Redis集群怎么搭?怎么分片的?
- Redis,持久化,RDB和AOF,AOF的具体过程,AOF文件重写是怎么做的
- Redis为什么单线程
- Redis底层的数据结构,SDS,缓存一致性是什么
- 使用redis来实现单点登录,那么当单个redis节点内存不够的时候,怎么办? 集群化,redis-Cluster
- redis怎么实现消息队列?怎么实现分布式锁?
- spring如何解决循环依赖
- Spring是怎么支持事务的
- 为什么@Transation注解修饰的方法可以在多线程的方式下互不影响
其他
- 服务器变慢的原因排查
- 看过哪些书,有什么印象深刻地方,学到什么?
- 职业生涯规划
- 分布式锁的实现
- 设计模式
- 架构师的任务
- 你有什么想问的
- 微服务,dubbo,springcloud,springdata
- 消息队列,activemq,rocketmq,rabbitmq,kafka
- mongodb,neo4j,hive
- es,zookeeper,docker,kubernetes,hadoop,spark
- git,maven,gradle,jenkins,shiro,netty
- restapi,protobuf,thrift
- 关注过哪些github项目
HR面
- 个人优缺点
- 家庭情况
- 导师和同学的评价
- 从学校经历和项目经历的角度做一下自我介绍?
- 在XX公司实习过程中,遇见最大的项难题是啥,如何解决的?
- 本科生的成绩如何? 研究生的成绩如何?
- 最近生活或者工作上遇见最大的困难是啥?如何克服的?
- XX公司有留用机会吗?为什么不选择留在xx公司?
- 您的职业规划路线是怎么样的?
- 跟同龄人相比,你最大的优势是啥?最大的劣势是啥?为什么说你最大的优势是XXX,能够举个例子吗?
- 了解我们的业务吗?你对XXX(业务)怎么看?
- 对于XX这个城市有什么看法? 为啥不考虑回老家呢?
- 父母职业工作是啥?有直系亲属在XX工作吗?
- 父母对你选择工作地点有影响吗?
- 有别的offer吗? 如果面临多个offer选择,你会怎么考虑?
自我介绍
最简单的模板
您好,我是来自xx大学的一名xx生,所学专业是xx。在校期间主要参与xx工作。
曾于xx公司xx项目组实习,参与XX。
我拥有良好的xx基础、编程风格,熟悉xx等,有过开源框架xx的学习和使用经验。
此外,我有着不错xx能力,性格方面xx。希望能有幸进入贵公司xx。介绍完毕,谢谢。