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