Java面试题集

Java&JVM&设计模式&UML

  1. jvm,jre以及jdk三者之间的关系?
  2. 序列化原理;类序列化时类的版本号的用途,如果没有指定一个版本号,系统是怎么处理的?如果加了字段会怎么样?哪些类有serialVersionUID属性,作用
  3. synchronized原理 synchronized修饰静态变量和普通变量的区别 修饰普通方法和类方法的区别:和Lock对比着说,说到各自的优缺点,synchronized从最初性能差到jdk高版本后的锁膨胀机制,大大提高性能,再说底层实现,Lock的乐观锁机制,通过AQS队列同步器,调用了unsafe的CAS操作,CAS函数的参数及意义;同时可以说说synchronized底层原理,jvm层的moniter监视器,对于方法级和代码块级,互斥原理的不同,+1-1可重入的原理等
  4. lock的原理和实现,lock和synchronize的区别
  5. int范围(基础数据类型) 基本数据类型,长度
  6. concurrenthashmap分段锁(1.7 1.8区别)
  7. 字节与字符的区别
  8. JDK动态代理与CGLIB动态代理原理
  9. List接口和Set接口的区别
  10. Collections的同步集合的包装 synchronizedMap 与ConcurrentHashMap区别11. Collections.sort在jdk1.6以前是用的归并排序,1.7后变成了TimSort排序(归并优化)
  11. 线程池原理 线程运行完后会消失吗?线程运行完后处于什么状态?怎么知道线程处于什么状态?线程池的构造类的方法的5个参数的具体意义?IO密集和CPU密集两种情况下,线程池里的线程数应该怎么设置
  12. 自己设计一个线程池
  13. 类加载机制(双亲委派、加载过程) 反双亲设计,类隔离
    JVM 分区、GC算法:分代 分代又包含标记清除、标记整理、复制、GC对象存活、GC垃圾收集器(尤其是CMS、G1)年轻代为什么分为8比1
  14. Serial 与 Parallel GC之间的不同之处
  15. OOM ;方法区OOM时的异常;查看dump 文件,怎么查看,具体命令记得吗,答jstack 具体怎么用的
  16. 四种引用
  17. finalize方法
  18. final关键字用法
  19. Condion await signal
  20. hashcode和equals区别 如果重写equals不重写hashcode会出现什么问题
  21. 生产者消费者模式的几种实现
  22. Java同步机制有哪几种
  23. equals与==区别
  24. Java内存模型 JMM
  25. volatile happens-before 内存屏障 指令重排 内存可见性
  26. 线程的状态
  27. Error、Exception,Java异常体系,常见RuntimeException,受检异常和运行时异常的区别;受检异常的JVM实现原理
  28. 泛型;泛型擦除
  29. String常量池 intern
  30. StringBuilder与StringBuffer
  31. 四种内部类
  32. 对象初始化顺序
  33. JVM的内存参数;xmx,xms,xmn,xss参数你有调优过吗,设置大小和原则你能介绍一下吗?;Xss默认大小,在实际项目中你一般会设置多大
  34. ThreadLocal
  35. try-finally-return
  36. JVM锁的几种状态(轻量级锁、重量级锁)自旋锁 自旋锁会死锁吗
  37. list和set的区别
  38. JVM 逃逸分析
  39. Integer的valueOf;为什么需要基础数据类型的包装类型
  40. JUC的几种并发工具,用法和原理
  41. BIO、NIO、AIO 重点NIO实现原理 NIO并不是严格意义上的非阻塞IO而应该属于多路复用IO;nio堆外内存
    AIO在工程中如何实现的?(大概说了下ajax的回调函数),又问回调函数具体是怎么实现的(传递函数指针)
  42. CAS 原理 底层是JNI;ABA问题; JNI下cpu和寄存器层面是怎么实现的
  43. JVM中对象组成
  44. 原子操作 AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的
  45. JVM指令(尤其是与并发有关的)
  46. Iterator与ListIterator,Iterator实现原理
  47. 排他锁与共享锁 读写锁
  48. 竟态条件
  49. Java8新特性
  50. 自动装箱、自动拆箱 int和Integer的区别
  51. 抽象类与接口 区别,使用场景
  52. static关键字; static修饰的变量并发下怎么保证变量的安全;出static修饰变量、修饰方法我会认为你合格,答出静态块,我会认为你不错,答出静态内部类我会认为你很好,答出静态导包我会对你很满意
  53. ArrayList和LinkedList的使用场景
  54. switch实现原理
  55. ReentrantLock底层的实现原理;lock和trylock的区别
  56. HashMap的实现原理 为何按位与而不是取摸 hashmap的iterator读取时是否会读到另一个线程put的数据 红黑树;hashmap报ConcurrentModificationException的情况
  57. 手写HashMap的实现,set get方法,不要求线程安全
  58. hashset的实现原理 因为别人知道源码怎么实现的,故意构造相同的hash的字符串进行攻击,怎么处理 如果要去除后还要有序
  59. 面向对象的三个特性
  60. 内存泄漏发生在哪 用过哪些调试java内存工具;非静态内部类会导致内存泄露,说了内存泄露的解决
  61. AQS
  62. 公平锁非公平锁介绍
  63. 方法栈
  64. hashmap,hashtable区别
  65. arraylist linkedlist vector的区别
  66. 热加载的原理 osgi实现, 也就是自己实现classloader, 还是来自周志明的那本jvm
  67. 重写和重载
  68. 线程的几种实现方式
  69. String有重写Object的hashcode和toString吗;String类添加功能,如何设计,可否继承
  70. 三个线程轮流打印ABC十次\
  71. 对象深拷贝与浅拷贝
  72. Java的反射原理
  73. 队列 set map 区别
  74. abstract 等关键字的作用,什么时候用
  75. 子类中如何调用父类的构造器,如果不用super关键字呢?有其他的方式吗?
  76. 如果两个线程都使用一个ByteBuf 怎么保证它的安全
  77. java中所有类的父类是什么?他都有什么方法
  78. wait()和sleep()的区别
  79. 解析XML的几种方式的原理与特点:DOM、SAX、PULL;Dom4J以及SAX的区别,什么时候用,怎么用
  80. Minor GC与Full GC分别在什么时候发生; 如何手动触发全量回收垃圾,如何立即触发垃圾回收;minor gc回收新生代,major gc回收老年代,full gc是全堆回收,老年代+新生代。
  81. 分派:静态分派与动态分派
  82. for each和正常for的用在不同数据结构(ArrayList、set、hashmap)上的效率区别
  83. static class和non-static class的区别
  84. 一个大文件几个GB,怎么实现复制
  85. 如何把java内存的数据全部dump出来
  86. jstack jmap、jconsole 等工具 可视化工具使用;如何线上排查JVM的相关问题?
  87. String s=new String(“abc”)分别在堆栈上新建了哪些对象
  88. 线程的各种状态
  89. Java 集合的快速失败机制 “fail-fast”
  90. 手写一个ArrayList类,实现add,remove,等基本的方法;对这个ArrayList进行改进,使之可以应对并发的场景
  91. Collections.sort函数jdk7 和 jdk8 分别怎么实现的
  92. ForkJoinPool ForkJoin框架
  93. 为什么匿名内部类的变量必须用final修饰,编译器为什么要这么做,否则会出现什么问题;如何访问在其外面定义的变量?
  94. PriorityQueue实现原理 替代:用TreeMap复杂度太高,有没有更好的方法。hash方法,但是队列不是定长的,如果改变了大小要rehash代价太大,还有什么方法?用堆实现,那每次get put复杂度是多少(lgN)
  95. 判断线程是否销毁
  96. 如果一个接口调用很慢,原因是,如何定位,没有日志的话:假设一下,复现问题,dump查看内存,查看监控日志
  97. SimpleDateFormat 线程安全
  98. StackOverFlow 栈溢出如何解决
  99. 设计模式分类
  100. 各个设计模式的UML
  101. 代理模式和装饰区别
  102. JDK中的设计模式实例有哪些
  103. 面向接口编程 优点
  104. 流程图和时序图
  105. 适配器和代理模式的区别
  106. 单例模式的几种实现
  107. 各种设计原则
  108. 单例模式的静态内部类式,为什么静态内部类式是线程安全的
  109. 抽象工厂和工厂方法模式的区别
  110. Java代码编译过程
  111. JKD1.8的JVM指令集上有什么更新吗对比1.7
  112. JDK1.8 lambda表达式、HashMap升级、ConcurrentHashMap升级、synchronized升级
  113. yield功能
  114. JVM如何确立每个类在JVM的唯一性;类的全限定名和加载这个类的类加载器的ID
    给定三个线程t1,t2,t3,如何保证他们依次执行
  115. Java8 stream迭代的优势和区别;lambda表达式?为什么要引入它
  116. 在生产线Dump堆分析程序是否有内存及性能问题
  117. comparable接口和comparator接口实现比较的区别和用法
  118. Arrays.sort
  119. protected权限能否被包外访问;几种访问权限
  120. ArrayBlockingQueue和LinkedBlockingQueue 原理
  121. java是如何实现跨平台的
  122. 字节码的编译过程
  123. JVM线程死锁,你该如何判断是因为什么?如果用VisualVM,dump线程信息出来,会有哪些信息?
  124. 查看jvm虚拟机里面堆、线程的信息,你用过什么命令?
  125. NIO DirectMemory是否了解

JavaWeb&安全

三层模型 MVC
如何过滤敏感评论
AJAX
DNS;底层用的什么协议
Forward和redirect的区别
tomcat集群会话怎么保证同步
部署项目时tomcat 的参数
如果运行的web项目突然停掉了,该怎么解决
有哪些服务器
HTTPS 公钥能用公钥解吗?在客户端抓包,看到的是加密的还是没加密 是没加密的
https ssl tcp三者关系,其中哪些用到了对称加密,哪些用到了非对称加密,非对称加密密钥是如何实现的
加密的私钥和公钥各自如何分配(客户端拿公钥,服务器拿私钥)
客户端是如何认证服务器的真实身份,详细说明一下过程,包括公钥如何申请,哪一层加密哪一层解密
怎么攻击https
什么是对称加密,什么是非对称加密,知道的加密算法有哪些
TLS改进,如果session ticket被偷听到会怎样,如何防止中间人攻击
Servlet 容器启动过程 生命周期 doPost,doGet,一些内置对象
httpServlet和genericServlet的区别
servlet过滤器和监听器所用到的设计模式
servlet,filter,listener的作用;生命周期
每一个 request 对应的 Servlet 是直接 new 出来还是只是用同一个
JDBC JDBC的桥接设计模式 jdbc的详细链接过程;底层源码;在Java中调用存储过程的方法
Session与Cookie,Session实现原理,如果服务器的负载量很高内存负荷不住要怎么办;session默认过期时间,过长会怎么样
分布式Session的几种实现方式;session一致性问题;如何防止session被别人伪造cookie得到
Cookie如果我不想js或http读,应该设置什么属性?里面有个属性httpOnly,这个属性你了解吗?
URL编码解码
WebService SOAP协议
HTTP 协议内容 get和post有什么区别?url中的host是什么意思?content-type是什么意思?如何获取http的状态码?状态码301和302有什么区别?http req、resp头有哪些字段?user-agent表示什么?
GET,POST等HTTP Method
url有最大长度限制,就问长度有限制是get的原因还是url的原因,为什么长度会有限制,是http数据包的头的字段原因还是内容字段的原因
怎么保证http的安全性,幂等性,回调同一个会话怎么标识不同请求,不同会话怎么区分
幂等性是http层面的问题吗,还是服务器要处理和解决的内容。(就是看你对幂等性的定性是怎么理解的)
http的缺点,无状态,明文传输。
Git常用命令 git rebase git rebase和git merge区别
HTTP 的无状态
xss攻击
csrf攻击
301状态码和302状态码的区别 搜索引擎碰到301状态码和302状态码会怎么做
sql注入
HTTP的短连接和长连接;长连接与短连接的区别(LVS是通过长连接作负载均衡)
HTTP2.0 特性 原理
对称加密和非对称加密
进程和Java虚拟机的关系
linkedhashmap和hashmap,treemap的区别
数字签名,MD5
Wireshark抓包
了解BCrypt算法
前端?HTML的DOM对象说几个,Document的对象和方法

OS网络数据库Linux

进程调度
文件系统;文件描述符是共享的还是私有的;文件系统(ext4)超级块
cp/mv的区别
软硬连接(inode这块,ln / ln -s)
32位系统的最大寻址空间
cache 替换算法(LRU是重点)
OS中的CAS
信号量
内存分页、分段 段页式调度 页面替换算法 ;段式与页式内存管理的优缺点
进程间的通信方式
进程的几种状态
软链接硬链接
大小端问题
什么是虚拟内存;虚拟内存机制
虚拟地址、逻辑地址、线性地址、物理地址的区别
什么是内存碎片?内碎片和外碎片的区别
OS死锁 死锁的必要条件,怎么处理死锁
共享内存原理
中断
进程与线程 怎么保证进程间数据的安全?线程呢?
进程的调度算法
乐观锁vs悲观锁;如果现在只有一张火车票,怎么让所有人都看见但是只有一个人能购买成功
访问网站的过程 输入http://www.baidu.com后每一层的作用 DNS、HTTP、TCP、OSPF、IP、
ARP协议
Ping的整个过程。ICMP报文是什么
IP地址分类
路由器与交换机区别;路由协议(RIP/OPSF)
b树,b+树,b*树 B树叶子节点个数、非叶子节点子树个数 磁盘IO次数
b 树和 hash 索引应用场合 区别
堆和栈的区别
TCP三次握手、四次挥手 挥手时客户端和服务器1s内发生5000次短连接,会发生什么问题 两次握手行不行 如果客户端不断的发送请求连接会怎样 那怎么知道连接是恶意的呢?可能是正常连接
TCP包的结构
四次挥手 为什么要有time_wait,以及如何避免
mysql索引底层 行级锁表级锁; sql语句写select *时如何加行级锁; mysql的行级锁加在哪个位置
mysql引擎
TCP可靠是如何保证
事务ACID;主键外键;视图与表
基于TCP的协议
索引失效,最佳左前缀法则
主键索引和普通索引的区别
各种join
事务隔离级别,mysql事务实现原理(redo log和undo log)
索引分类(unique、cluster、primary) unique唯一索引的使用,索引字段若相同则更新,不同则插入
聚集索引在底层怎么实现的,数据和关键字是怎么存的
TCP长连接与短连接
explain SQL分析 每个列代表什么含义(关于优化级别 ref 和 all,什么时候应该用到index却没用到,关于extra列出现了usetempory 和 filesort分别的原因和如何着手优化等)
show profile 怎么使用
数据库范式,反范式
两军问题
TCP与UDP区别 udp怎么实现可靠传输
TCP 流量控制 拥塞处理 TCP滑动窗口与回退N针协议
Tcp连接状态如何查看
复合索引 复合索引要把那个字段放最前,为什么
计算机网络层次结构,每层内容(协议等)
TCP的数据包格式
数据库连接池; mysql数据库连接池的驱动参数 ;数据库连接池如何防止失效;数据库连接池代码
mysql 实现层级树形结构
sql 查询优化 mysql
linux 查看文件内容的命令
linux netstat top ipconfig ps
linux的显示文件夹大小 ls -al; Linux命令查看文件大小
linux的查看端口状态 natstat加参数
linux的查看进程的启动时间 ;查看一个进程具体信息,打开了哪些文件描述符,打开的端口,上一次占用CPU率
linux 显示文件属性 杀死进程 找出出现次数最多的ip linux指令
linux性能监测和调优
linux 查看磁盘读写吞吐量
linux 查看80端口连接数
mysql通信前端到sql解析到sql优化到数据库引擎
mysql cluster 实现原理 ;主从复制(架构/错误恢复/MHA);读写分离 原理;
linux awk ;用awk统计一个ip文件中top10
linux 如果不知道tomcat的端口号,也不知道服务器的名称,如何查看服务器占用的哪个端口
如果确定查询的结果只有一行,在没有使用索引的情况下,怎么加速
mysql 数据类型 知道text和blob吗?text和blob有什么区别? text中能存放图片吗?项目中图片是怎么存的?为什么不直接存成blob? text和varchar有什么区别? int占多少位?
视图和存储过程
like%…%为什么会扫描全表?遵循什么原则?
TCP 四次挥手 TIME_WAIT 等待两个 MSL作用 如果在 TIME_WAIT等待时客户端手动指定该端口再次发起连接,那么可以建立连接吗?
TCP 三次握手 服务端回复时可以将 ACK 和SYN分开发送吗 ;最后一次没有握手成功会,连接会建立吗
客户端收到一个窗口为 0 的包怎么处理
linux select、epoll;什么是IO多路复用;epoll 水平触发和边缘触发 ;direct io和buffer io区别
给定一个图片 URL,讲一下获取这张图片的整个过程
为什么要设计进程 可以从进程演化历史、批处理、多道程序设计、进程间通信考虑
linux lsof、tcpdump、gdb
Linux 如何抓包
Linux管道机制,什么原理
linux vmstat命令
静态链接库和动态链接库的区别
TCP洪水攻击
32位系统的内存寻址空间多大,
具体分为哪几种形态?库函数和系统调用有什么区别
一个进程的内存分段以及对应的作用
linux实时查看打印的 log 日志内容; 实时查看日志命令
linux系统日志在哪里看
mysql的binlog
sql语句各种条件的执行顺序,如select, where, order by, group by
linux Java 中怎么获取一份线程 dump 文件:你可以通过命令 kill -3 PID (Java 进程的进程 ID)来获取 Java 应用的 dump 文件
写sql 查询带日期
mysql批量操作
mysql容灾备份 ;数据库挂了怎么办?除了热备份还有什么方法
mysql存储底层实现
MySQL存放地理信息位置
Mysql要加上nextkey锁,语句该怎么写
linux Cpu load的参数如果为4,描述一下现在系统处于什么情况
Linux 查找磁盘上最大的文件的命令
什么是elf头文件
linux sendfile
为啥mysql索引要用B+树而MongoDB用B树?
编译原理 LL1 ;语法解析词法解析;编译步骤分几个部分;编译程序常用表达方法
数据库死锁以及解决
Linux文件权限
shell编程
网络 连接重置
网络通信中管道选取异常什么情况下会出现
chmod、chown、chgrp
查看网络带宽的命令
替换文本字符串的命令 sed
将当前目录下所有以“.txt”结尾的文件打印出来,再追问,除了“.txt”再加上“.abc”结尾的也打印出来。

分布式理论与设计

网站并发量是多少?
用手机扫二维码登录是怎么实现的?
一台机器可以能宕机怎么办?
影响单台服务器的并发量的因素有哪些?如何优化?
考虑如何设计一个高并发量高吞吐量的服务器?如果是分布式的怎么设计?
分布式服务器会出现哪些问题
项目中超卖问题解决 1)乐观锁 2)队列
抢购怎么实现?为什么用Redis? 具体该怎么做?一台Redis肯定是不行的,该怎么办?了解集群吗?
设计一个系统,解决抢购时所需要的大量的短链接的功能,如何保证高并发,如何设计短链接
一万个人抢100个红包,如何实现(不用队列),如何保证2个人不能抢到同一个红包,可用分布式锁
一致性hash;一致性hash增加减少cache时,是怎样做的
正向代理、反向代理
发布订阅模式 与 观察者模式
分布式数据库
分布式文件系统 分布式存储系统(GFS、HDFS、fastDFS)、存储模型(skipList、LSM等)
微信红包的设计
大型网站架构:《大型网站技术架构》中起码有哪些个方面
map reduce过程
SOA
项目中的1G左右的文件 如何实现断点续传和多线程上传
负载均衡方式
CAP+Base
PAXOS协议 RAFT协议
分布式锁 zk实现分布式锁的方式;redis实现;数据库乐观锁
分布式事务
Reactive backpressure
分布式接口的幂等性设计
缓存穿透
分库分表
RPC框架(包括整体的一些框架理论,通信的netty,序列化协议thrift,protobuff等)
分布式生成唯一序列号
负载均衡(DNS/nginx/LVS/vipserver)
高可用集群(heardbead/keepalived )
heardbead与keepalived的区别,脑裂问题的解决,高可用方案的优劣
LVS四种模式

开源项目

Tomcat 实现原理
JSON类库实现原理,给你一个json字符串, 你要怎么把它变成一个java对象?
websocket 原理
SpringIOC、AOP 优点,原理,常用注解介绍,AOP应用场景,Spring依赖注入方式;bean容器初始化bean之前之后要加入aop如何实现
Spring 初始化 @PostConstruct注解方式,init-method的XML配置方式,InitializingBean接口方式,三种实现上有什么区别
autowire和resourse关键字的区别
Spring 处理 XML 用的是什么库吗
自己实现Spring:每一步用什么数据结构, 存什么
map的key存name有问题吗?
value存什么?class
那我要实例怎么办? forName
单例多例分别怎么解决?
内存泄露要考虑吗, 或者说怎么考虑生命周期和引用
Spring事务传播行为
SpringMVC 原理,常用注解介绍
springmvc想要用HttpServlet的对象怎么用(在方法参数上加),那是怎么注入进去的,怎么实现的你知道嘛
MyBatis/Hibernate 原理,源码,区别;批量操作;MyBatis缓存(一级、二级); mybatis的#和$号区别 ;mybatis一级缓存及可能存在的问题,两个机器能否共用同一个SqlSession实现一级缓存;mybatis如何映射表结构
在Hibernate中java的对象状态有哪些;hibernate主键生成策略
mybatis和hibernate各自的缓存原理和比较,hibernate的一级二级和查询缓存,还有针对缓存的miss率,置换策略,容量设置和性能的平衡
mybatis和ibatis的区别
怎么保证redis和db中的数据一致
redis实现原理 ;持久化;redis cluster实现原理 ;redis数据类型 string和list都有什么适用场景 ;Codis相关
redis与memcached区别 memcache如何保持缓存一致性
redis中SortedSet结果
redis主从复制过程,同步还是异步等; redis主从是怎么选取的
redis插槽的分配;redis主节点宕机了怎么办,还有没有同步的数据怎么办?
redis集群的话数据分片怎么分,然后就是如果并发很高,几十万并发,可以做哪些优化
Nginx配置(如果项目使用到了的话),负载均衡机制 ;nginx的请求转发算法,如何配置根据权重转发
Log4j 输出至数据库
Dubbo 通信原理;序列化原理;超时重试;负载均衡;
文件上传原理
Netty原理 ;心跳;线程模型;尝试看源码;优点;Netty零拷贝, 怎么实现
RocketMQ原理 可靠消息原理 尝试看一下源码;优点
Druid原理,数据源/数据库连接池原理;连接池中的连接是长连接还是短连接?为什么?;连接池中的连接是基于什么协议的连接?为什么?
zookeeper的Leader选举过程,实现机制,有缓存,如何存储注册服务的;事务,结点,服务提供方挂了如何告知消费方;3 个节点挂掉一个能正常工作吗?
jmeter、ab等性能测试工具
maven生命周期,常用maven命令;Maven包冲突怎么解决?Maven有什么命令可以解决包冲突?Maven怎么把所有包打包
Spring Boot实现原理
SSO JWT token原理
etcd 类似于Zookeeper,基于Raft协议
Jedis源码

数据结构与算法

求a的b次方,考虑负数
字符串全排列
两个大文件找重复行
汉诺塔
atoi 要考虑负数和溢出;itoa
手写BlockingQueue
怎么判断一个二叉树是否是平衡二叉树
斐波那契数列
冒泡排序优化
选择排序
求任意二叉树第k层结点个数
平衡二叉搜索树;平衡二叉树插入删除查找
手写快排,快排改进 归并排序和快速排序的思想和区别,不用递归实现快排、
归并排序
求质数最好的方法
手写链表
链表翻转 要O(1)
各种排序的时间复杂度、空间复杂度,是否稳定
平衡二叉树,使用一维数组存储
数组的最大子序列和;最长递增子序列,一个dp数组一个max数组,最优情况;一个数组,有正有负,不改变顺序的情况下,求和最大的最长子序列
二分查找
二叉树的遍历 二叉树非递归遍历 二叉树的层序遍历 查找复杂度、最差时间复杂度、最好时间复杂度
n n 的矩阵,按副对角线打印 ;矩阵旋转打印;之字形打印矩阵;45度斜线打印矩阵
图的遍历(深度优先、广度优先)
背包问题
链表倒数第 k个节点
一个无序数组找第K大的元素
数组与链表区别
判断链表是否有环
Hash 冲突
不用自带库的情况下,如何求根号3,精度在0.00001以内,保留两位小数
前缀树
判断两个链表是否相交
两个栈实现队列
找出数组两个数的和等于给定的数;一个先减后增的数组,查找目标值
无序数组找中位数
两个有序数组找中位数
大数据去重问题
top K ;找到第k大的数 ;100000个数找出最小或最大的10个 ;有一个很长的链表,找出倒数第k个元素 ;单机版 Top K:给 N 个数,找出第 K 大的数(快排的 partition,最小堆),如果用堆的话,算法时间复杂度;海量数据(不能在单机完成):分布式 Top K?(面试官说考察 map-reduce 思想)
维护一个堆;堆排序的原理;堆排序大概是怎么实现的?堆排序你使用过吗,是用的怎样的底层存储,数据结构;底层是用的数组,逻辑上是怎样的结构
字符串匹配 KMP 正则中用的改进后的BM算法;搜索算法PN
使用一个数组实现一个链表,i存自己下标,i+1存下一个结点下标,i+2存值 要求使用移位操作
找出一个数组里面重复的数:用hash方法,建一个2的32次方个bit的hash数组,每取一个int数,可hash下2的32次方找到它在hash数组中的位置,然后将bit置1表示已存在
单链表奇偶位反转
一堆数字里面去重
如果要你做一个防火墙,有10万个黑名单,有可能会增长达20万个,一个数据包过来,如何匹配
求一个集合的所有可能子集 给定字母集合(a-z), 求出由集合中这些字母组成的所有非空子集
合并两个有序链表的时间复杂度
翻转单词顺序
https://leetcode.com/problems/2-keys-keyboard/description/
https://leetcode.com/problems/fraction-to-recurring-decimal/description/
3L桶一个,5L桶一个,无限水,怎么倒腾出4L来
爬n层楼梯,一次只能上一层或两层,输出所有情况的路径; 爬楼梯,写出状态转移方程
跳阶问题
列出一个目录下所有文件,包括子目录
对整数分解质因数,90=2335
找出只出现一次的数字
给单链表排序,时间复杂度O(nlogn),空间复杂度O(1)
判断一个字符串能否被字典完全分词(dp)
m乘n的格子,求正方形数
约瑟夫环
给定一个数组, 里面放置任意数量的随机数, 如何快速统计出数组中重复的数字以及出现次数
AVL树的概念, 四种旋转方式, AVL树左右旋转的例子
QQ每天都会产生大量的在线日志记录, 假设每天的在线日志记录有十亿条, 请设计一个算法快速找出今天的在线人数 ;3亿条IP中,怎么找到次数出现最多的5000条IP
扑克牌模拟题
每行一个单词,有很多行,统计出现频率最高前 10 个单词
最小生成树prim算法与最短路径Dijkstra算法
找素数
递归求阶层
把一个数组中奇数放前面,偶数放后面
统计一个整数的二进制表示中bit为1的个数
1000个苹果放10个篮子,怎么放,能让我拿到所有可能的个数
动态规划(笔试回回有。。)、贪心
二叉树的最长距离;二叉树最近相同父节点
旋转数组中查找某一个值
识别2的n次方:n&(n-1)可以去掉二进制最右的1,那2的n次幂&之后便为0
手写字符串的正则匹配,实现
和.的功能,用的递归
两个大数求和,要按高到低位的输入,实时输出结果的对应位,空间O,时间O(n),不借助工具类。(要考虑实时的进位标识,以及多个9之后的连续进位标识)
int范围的随机数的阶乘编码实现
存储十万条数据(键值对)到内存如何实现
求一个不完全三叉树叶子最多的层,求深度;找出一个三叉树节点数最多的层
数组实现一个循环队列
红黑树的插入删除搜索效率,最坏插入删除搜索效率
给定一个字符串,找出只出现了一次的两个字符
找出连续数中缺失的数字
找出一个数在有序数组中的位置,不行就找出下一个
升降数组中的最大值
桶排序
链表删除倒数第K个节点
多路有序链表合并 改进
树的下一个节点
找出数组中n/2的数
找出链表环的头部
跳表和红黑树的区别
烧绳子
扔骰子,1-2对方赢,3-5 自己赢,6重新仍,问自己赢的概率
O(n) 合并两个二叉查找树
给跳跃步数求最短路径
Trie树 Implement Trie(Prefix Tree) 最长匹配;淘宝存着一个包含10w个敏感词的词库,紧接着需要从多个商品标题中随机抽查3个有没有包含敏感词的商品。
二分搜索变形:找第一个target
最长上升子序列
一个无序数组,其中一个数字出现的次数大于其他数字之和,求这个数字 (主元素)
一棵二叉排序树,给定一个数,找到与给定数差值最小的数
两个排序的数组A和B分别含有m和n个数,找到两个排序数组的中位数
Generate Parentheses
最小公倍数和最大公约数
如何判断一个树是不是另一颗树的子树
判断一个IP是否在黑名单列表中
将一个只含有1~n的乱序数组(不重复)的第一个数变成-1,求哪个数被变成了-1
二叉树高度(递归,非递归)
一个数组只有一个数不重复,找出这个数
一个数组有两个不重复,找出这两个数
如何判断一个数是2的次幂
图存储
两个数据集求并集
二进制文本切割,文本中前两个字节是要给字符串的长度,然后将整个文本进行切割换行放入另一个文本
现在有一个特别大的文件,大概1T,现在要从服务端拖拽到客户端,有什么思路?
最长回文子串的程序
有序链表构建平衡搜索二叉树
2Sum,然后引申Nsum
如何实现用户热搜关键词提示(字典树)
计算一个树中两叶子节点间最大路径和
一段字符序列,求每个字符出现的次数,要求时间复杂度和空间复杂度最优
给定一个数,要求求出比这个数稍大的一个数,该数是2的幂。时间复杂度O(1)
把 “http://www.zhidao.baidu.com” 这样的字符串改成 “com/baidu/zhidao/www”。——老题目了,剑指 offer 的,两次逆序排列即可。
长为N的数组,元素范围是0-N-1,其中只有一个数是重复的,找出这个重复元素
矩阵从左上角向右下角走,每次只能向右或者向下移动,求经过最大的路径
数n可以由完全平方数构成,求最小的完全平方数构成数。
多叉树实现,并层次遍历的代码
找到最大子数组的 start, 和 end 下标
找出一串字符中第一个不重复字符的下标
如何求二叉树中两个节点的最短路径
一个无限长的数组实现一个类似hashmap的结构

作者:宋欣建
链接:https://www.zhihu.com/question/266086679/answer/303789485
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值