diff --git "a/HBase\346\235\203\345\250\201\346\214\207\345\215\227.pdf" "b/HBase\346\235\203\345\250\201\346\214\207\345\215\227.pdf" new file mode 100644 index 0000000..0f9017d Binary files /dev/null and "b/HBase\346\235\203\345\250\201\346\214\207\345\215\227.pdf" differ diff --git a/Java b/Java new file mode 100644 index 0000000..d2e4c46 --- /dev/null +++ b/Java @@ -0,0 +1,107 @@ +// baidu ------ +java 类加载过程 +java.util.concurrent包下的类 *** +treemap了解 +hashmap原理 kv插入过程 hashmap能插入重复元素吗 key重复 value重复 ***** +Hashmap和HashTable的区别, HashMap能插入null,key为null?value为null? +如何在多线程环境下使用Map,ConcurrentHashMap原理,ConcurrentHashMap如何加锁 +Set的实现,各自的特性 +GC root垃圾回收 引用计数的缺陷 ***** +用过哪些collection +对象相等的判断 equals方法实现 +ReetrantLock和synchronized的区别 +对valitile的理解 + + +// baidu end + + +// JD +垃圾收回,集合框架,对spring和springboot的理解 +Long a=100 Long b= 100, a==b是true or false, 如果是300呢 +object类有哪些方法 +hashmap系列 +jvm 内存布局 +一个String类型字符串s在jvm中如何存储 +如果把s重新赋值, 这时候字符串在jvm中怎么存 +多线程怎么并发运行 +synchronized能保证按序获得锁吗 那有什么方法能按序获得锁 +假如有三个线程,我想让他们按序循环不停的执行,怎么做 +手写单例模式 ***** +java的静态成员变量和静态常量存在哪 +垃圾回收算法 ***** +java与c++的区别 +hashMap源码与currenthashmap源码,1.7与1.8 的区别 +hashmap在并发情况下,会出现什么问题 +给了一个场景题,说怎么实现每隔一秒在控制台输出一句话 +java多线程怎么实现的 +java虚拟机的内存模式 +怎么打破双亲委派模式 +java虚拟机怎么识别是符合标准的class文件,魔数?,我也不知道 + + + +//JD end + + + +// ali +Java内存模型和GC算法 ***** +分代回收算法 +对象如何进入老年代 +新生代用的什么算法 老年代用的什么算法 +lock synchronized volatile的区别 ***** +乐观锁, 悲观锁 +乐观锁使用场景,使用乐观锁的产品或中间件 +线程池参数 +缓存线程池的参数如何设置,特性是什么 +一个核心池为2,等待队列3,最大线程数10的线程池,已有两个线程运行任务,第三个任务进来时如何处理 +jvm垃圾回收 +juc包里看过那些类的源码 +hashmap为何是线程不安全的?线程不安全有哪些表现? +java的并发方式 +线程安全的理解 +Java源码中的HashMap、HashTable、ArrayList及LinkedList +解决Hash冲突的方法及Java8对链地址法有何优化 +加载器双亲委派模型及破坏 *** +线程中断有什么用,若某个线程的run()方法正常运行,执行累加运算,调用Thread.interrupt(),会发生什么? +线程和进程的区别。 +解释synchronized和valatile关键字,有什么区别,如何理解valatile保证内存有序性 ***** +HashMap是否线程安全?ConcurrentHashMap实现原理,jdk 1.7和jdk 1.8有什么区别? ** +可以自己实现一个与java.lang.String完全相同的类吗?(答了自己的理解,扯到类加载和类相同的问题上),双亲委派类加载模型,可以加载自定义的String类吗?如何实现? +分布式锁,使用场景,知道哪些实现方式 +hashmap实现原理,把知道的都说出来 **** +spring的aop的实现方式,aspectj和jdk动态代理,cglib动态代理,讲了下实现的原理 +两个线程打印1.2.3.4打印到100怎么实现,这里刚开始说的是加锁用生产者消费者来做,后来说了semaphore,感觉后面的才是面试官想要的答案。 +jvm虚拟机老年代什么情况下会发生gc,给你一个场景,一台4核8G的服务器,每隔两个小时就要出现一次老年代gc,现在有日志,怎么分析是哪里出了问题 +Hashmap实现原理,hash冲突 +JVM 内存模型,堆和栈区别 +JVM只是看过书,有没有自己动手去实现 +Spring AOP具体怎么实现的 +java 中static理解,final理解 +hashmap为什么是数组+链表,不是数组加数组 +怎样减少hash碰撞,给出具体方案 +数组为什么是连续存储的 +数组的初始长度为什么是15 +hashmap里的链表初始长度为什么是16 +线程是如何并发执行的,cpu在干嘛 +字符串连接的几种方法区别 +String类为什么设计成final +hashmap的数据结构是什么,具体是怎么实现的,是不是线程安全的(不是),那么它的线程安全的替代有哪些 +java有多继承吗?(没有)那如何实现类似于多继承的功能呢? +讲一下JVM的分代回收以及具体算法 +将一下JVM的垃圾收集器,G1和CMS有啥区别? +讲一下一个变量从产生到结束所经历的过程,讲一下字符串常量的过程? +将一下线程安全问题产生的原因? +讲一下乐观锁和悲观锁 *** +乐观锁是怎么保证一致性的 +Integer和int有啥区别,integer中有哪些特殊的函数? +说一下hashcode的作用?HashMap的底层实现?HashMap和HashTable的区别 +说一下concurrentHashMap和hashTable在性能上的区别?以及这种差异形成的原因 +Object类的方法,逐个解释一下(clone,hashCode,equals,wait,finalize,notify) +spring ioc/aop *** + + + + +// ali end diff --git a/Java.I.O.NIO.and.NIO.2.pdf b/Java.I.O.NIO.and.NIO.2.pdf new file mode 100644 index 0000000..4073a2c Binary files /dev/null and b/Java.I.O.NIO.and.NIO.2.pdf differ diff --git "a/MongoDB\346\235\203\345\250\201\346\214\207\345\215\227.pdf" "b/MongoDB\346\235\203\345\250\201\346\214\207\345\215\227.pdf" new file mode 100644 index 0000000..30bef5e Binary files /dev/null and "b/MongoDB\346\235\203\345\250\201\346\214\207\345\215\227.pdf" differ diff --git "a/MySQL\346\212\200\346\234\257\345\206\205\345\271\225\357\274\232SQL\347\274\226\347\250\213.pdf" "b/MySQL\346\212\200\346\234\257\345\206\205\345\271\225\357\274\232SQL\347\274\226\347\250\213.pdf" new file mode 100644 index 0000000..a2793fe Binary files /dev/null and "b/MySQL\346\212\200\346\234\257\345\206\205\345\271\225\357\274\232SQL\347\274\226\347\250\213.pdf" differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..9e28a41 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Java_Books +Java 编程书籍分享,便于查找,建议购买原著 +侵删 diff --git "a/Redis\350\256\276\350\256\241\344\270\216\345\256\236\347\216\260.pdf" "b/Redis\350\256\276\350\256\241\344\270\216\345\256\236\347\216\260.pdf" new file mode 100644 index 0000000..9e1f22c Binary files /dev/null and "b/Redis\350\256\276\350\256\241\344\270\216\345\256\236\347\216\260.pdf" differ diff --git "a/Spark\345\277\253\351\200\237\345\244\247\346\225\260\346\215\256\345\210\206\346\236\220.pdf" "b/Spark\345\277\253\351\200\237\345\244\247\346\225\260\346\215\256\345\210\206\346\236\220.pdf" new file mode 100644 index 0000000..fc28f8c Binary files /dev/null and "b/Spark\345\277\253\351\200\237\345\244\247\346\225\260\346\215\256\345\210\206\346\236\220.pdf" differ diff --git "a/ZooKeeper-\345\210\206\345\270\203\345\274\217\350\277\207\347\250\213\345\215\217\345\220\214\346\212\200\346\234\257\350\257\246\350\247\243.pdf" "b/ZooKeeper-\345\210\206\345\270\203\345\274\217\350\277\207\347\250\213\345\215\217\345\220\214\346\212\200\346\234\257\350\257\246\350\247\243.pdf" new file mode 100644 index 0000000..f5beb74 Binary files /dev/null and "b/ZooKeeper-\345\210\206\345\270\203\345\274\217\350\277\207\347\250\213\345\215\217\345\220\214\346\212\200\346\234\257\350\257\246\350\247\243.pdf" differ diff --git "a/[ActiveMQ\345\256\236\346\210\230].(ActiveMQ.in.Action).Bruce.Sny.pdf" "b/[ActiveMQ\345\256\236\346\210\230].(ActiveMQ.in.Action).Bruce.Sny.pdf" new file mode 100644 index 0000000..a3a8a68 Binary files /dev/null and "b/[ActiveMQ\345\256\236\346\210\230].(ActiveMQ.in.Action).Bruce.Sny.pdf" differ diff --git a/big_data b/big_data new file mode 100644 index 0000000..7db9f40 --- /dev/null +++ b/big_data @@ -0,0 +1,118 @@ +计算机网络分为哪几层? +TCP和UDP有什么区别?什么场景使用TCP,什么场景什么UDP?哪些应用层协议使用了TCP,哪些使用了UDP? +什么是窗口滑动协议,什么是快速重传,什么是拥塞避免,什么是慢启动? +TCP连接需要几次握手?几次分手? +当你输入域名访问一个网站的时候,背后的过程是什么? + 这个问题是比较开放的,你可以回答的内容有很多,但是你如果回答得越详细肯定是越好的。第一步就是域名解析,域名解析的话你可以说一下域名缓存在哪些地方, + 然后如果你域名在本地没有缓存的话,是如何通过DNS来进行域名解析的,如果你的DNS服务器上没有保存那个域名,那你的DNS服务器将如何处理来得到这个域名的ip。 + 第二步就是说一下TCP连接的三次握手的过程。其他拓展内容有很多可以说,看你知识储备。例如你可以说通过CDN来进行访问加速。 + 也可以说目前网站基本上都是前后端分离的,访问的时候会先访问反向代理服务器进行负载均衡之类的 + 从用户在浏览器输入域名,到浏览器显示出页面的过程 + + 什么是https协议?https协议用到了哪种密钥? + 什么是socket? + 什么是IO,什么是NIO,什么是AIO,什么是netty框架? + + // + 数据库的事务有哪些特性? + 数据库中的隔离等级有哪些? + 数据库的索引有什么作用?用什么来实现的? + B树和B+树有什么区别?为什么索引不用B树 + 什么是乐观锁,什么是悲观锁?***** + 数据库的四种隔离级别,怎么避免脏读 + 怎么查看是哪一条SQL执行慢(这个之前在面拼多多的时候也被问到过,但楼主没去看,被自己不善于总结坑了),slow_query_log,long_query_time,slow_query_log_file, + sql有几种join,map join了解过没 + + + + // + 进程和线程的区别是什么? + 进程间通信的方式有什么?线程间通信的方式有什么? + 什么是缓存?有哪些缓存的更新算法? + 对shell命令熟悉吗,如何查看内存和cpu使用情况 + 进程间有哪些通信方式,如果有两个进程,一个进程执行一半要求另一个进程终止,该如何操作 + + + // + 了解树的先序遍历,中序遍历,后序遍历。图的广度优先搜索算法,深度优先搜索算法 + 如果你是准备笔试算法题的话,我建议你先刷剑指offer,然后再去刷leetCode + 算法题中的重点应该是动态规划,主要是因为动态规划如果你能够找得到状态转移方程的话,那么代码行数会比较少的,所以动态规划适合被当作笔试题,这个要重点准备。 + 矩阵乘法。 + 有一个数组, + (1)其中有一个数出现次数超过半数,找到这个数? + (2)其中有两个数出现次数都超过了30%,找到这两个数? + + 写一个栈的实现,用数组,确保最大队列长度为k +经典DP 最长公共子串 +手写归并排序; +用队列实现栈的功能 + 如何判断一个树是否符合查找树的规则 + 链表反转 + 字符串中第一个只出现一次的字符 + 最大和子数组 + 二叉树前序遍历的非递归 + 二维数组中的查找 + + + + // + java虚拟机的内存如何划分的? + java的垃圾回收算法有哪些?垃圾回收器有哪些?不同的垃圾回收器有什么区别? + voliatile和synchonized有什么区别?synchonized和jdk提供的Lock包又有什么区别? + HashMap的原理是什么 + 常用的设计模式有哪些? + Spring的AOP、IOC作用是什么?如何实现的。 + 介绍一下array、set、map的继承关系,画图 + 说一下ArrayList和linklist的底层实现原理,和数据结构 + Hashmap和hashtable的区别 + 线程的实现方式有什么,写出来 + 讲一下synchronize和volatile锁的问题 + 说一下java的内存模型 + 了解GC吗,讲一下原理 + jdk1.8的特性。 + hashmap和currenthashmap的数据结构,volatile了解吗,写个volatile的应用场景(我就说了单列的双重检验) + 问了一些juc并发库有哪些类(futrue,futruetask,excutors,executorthreadpool,countdownlatch,cyclicbarrier,symphone等) + 怎么确保当所有线程执行到某个点等待,直到所有线程都执行到时一起往下执行(cyclicbarrier) + cyclicbarrier和countdownlatch有什么区别,以及应用场景 + equal hashcode区别 + HashMap与HashSet的区别;ThreadLocal原理;垃圾收集算法; + 了解hashMap 和hashTable吗介绍下,他们有什么区别 + .java里set,Array和map等容器了解吗,它们的继承关系写一下 + 线程安全有了解么,介绍下 + hashmap和 hashtable区别 hashmap的底层和hashmap怎么解决hash冲突 + String、StringBuffer、StringBuilder的区别,怎么理解String不变性 + ==和equals的区别,如果重写了equals()不重写hashCode()会发生什么 + volatile怎么保证可见性,synchronized和lock的区别,synchronized的底层实现 + sleep和wait的区别,sleep会不会释放锁,notify和notifyAll的区别 + 了不了解线程的局部变量,讲讲线程池参数 + 什么情况会发生死锁,死锁的处理方法 + Cookie和Session的区别,怎么防止Cookie欺骗 + + // + HDFS的写入过程 + 你理解的spark、运行模式 + Hbase存储原理和过程 + 节点通信问题 + Zookeeper的同步过程 + Hive的特点都有什么 + HBase的优势,为什么使用了HBase、设计rowkey? + spark中的shuffle有哪些? + mysql、spark中的join原理。 + spark中几种partitioner、水塘抽样? + hadoop shuffle 象征性的问了下 + hdfs create一个文件的流程; + hdfs写入流程; + mapreduce 第一代架构及其通信 + Yarn架构及其流程; + MapReduce的过程,map,shuffle,reduce这些 + HDFS写数据过程介绍 + spark工作机制,哪些角色,作用 + spark yarn模式下的cluster模式和client模式有什么区别 + 介绍Spark,client提交application后,接下来的流程,driver,yarn怎么通讯,开始执行,balabala + 实验环境,你搭建hadoop集群的规模,进行过哪些操作 + spark的架构,数据倾斜,rdd的宽依赖和窄依赖 + map阶段运行特别慢怎么办 + + + + diff --git a/code b/code new file mode 100644 index 0000000..066f3a5 --- /dev/null +++ b/code @@ -0,0 +1,26 @@ +// baidu ------ +写生产者、消费者代码 +字符串中出现的第一个只出现过一次的字符 +观察者模式 单例模式 双重检测单例 饿汉懒汉单例模式 +数组旋转的最小值 ***** +快排 ***** + + + +// baidu end + + +// ali + +非递归遍历二叉树 +查找数组的中间元素 +非递归且不用额外空间(不用栈),如何遍历二叉树 +top k问题,100亿条数据,找出其中最大的20条,并分析时间复杂度 +给你两个文件(字符串形式的)如何找出他们之间的不同地方? +快速排序的平均复杂多少?最坏情况是什么? +给你50亿行字符串,机器4G内存(只能一台机器),找出重复次数最多的那行字符串?(以行为单位,每行不超过10个字符) +一个圆上三个点形成钝角的概率是多少? +讨论了下堆排序 +手写快排/冒泡排序 + +//ali end diff --git a/db b/db new file mode 100644 index 0000000..d17bbc7 --- /dev/null +++ b/db @@ -0,0 +1,45 @@ +// baidu ------ +数据库索引的实现 + +// baidu end + + +// JD +redis用过它的哪些功能和哪些结构 +redis你在项目中只是用到基本的缓存功能吧,那你还了解redis的其他功能吗 +mysql的索引 *** +介绍一下索引?怎么使用索引的? +B树与B+树的底层 +数据库怎么实现分库分表 + + + +//JD end、 + + + +// ali +什么是数据库事务 +数据库事务的性质,隔离级别 +数据库如何实现串行化 +缓存数据处理【说的LRU】 +数据库事务和隔离级别 +数据库引擎及比较 +数据库索引,B+树 +用过哪些数据库,支持事务的数据库的四个特性,数据库的四个隔离级别 +数据库索引,对索引的理解,索引的优点,索引的分类 +hash索引和b树索引的区别,适用场景 +使用b树有什么优势,b树和b+树的区别,b树和红黑树有什么区别 +联合索引用过没 +Sql设计一个部门表 +平时用mysql用什么引擎 +数据库事务的特性有哪些 +事务并发可能会导致哪些问题,数据库的隔离级别有哪些,mysql默认的是哪种级别,这种默认的隔离级别能够避免哪些问题(复习的太久了,有一些忘记了,这个问题居然答得不全) +如何判断SQL查询操作是不是慢sql,如何优化 +讲一下数据库的隔离等级 ** +说一聚簇索引和非聚簇索引的有什么不同' +MVCC + + + +// ali end diff --git a/docker_practice.pdf b/docker_practice.pdf new file mode 100644 index 0000000..26ca0e0 Binary files /dev/null and b/docker_practice.pdf differ diff --git "a/mysql\346\212\200\346\234\257\345\206\205\345\271\225 innodb\345\255\230\345\202\250\345\274\225\346\223\216(\347\254\2542\347\211\210).pdf" "b/mysql\346\212\200\346\234\257\345\206\205\345\271\225 innodb\345\255\230\345\202\250\345\274\225\346\223\216(\347\254\2542\347\211\210).pdf" new file mode 100644 index 0000000..bacf4d1 Binary files /dev/null and "b/mysql\346\212\200\346\234\257\345\206\205\345\271\225 innodb\345\255\230\345\202\250\345\274\225\346\223\216(\347\254\2542\347\211\210).pdf" differ diff --git a/net-protocol b/net-protocol new file mode 100644 index 0000000..aafde41 --- /dev/null +++ b/net-protocol @@ -0,0 +1,16 @@ +b: Tcp/UDP区别 +b: Tcp三次握手 四次挥手 +b: 网络的五层结构 每层干了什么 + + + +// ali +TCP和UDP区别 +TCP如何保证可靠性,拥塞控制如何实现 +网线断了tcp连接情况 +网络的体系结构分为哪五层,每层分别有哪些协议 +TCP和UDP的区别是什么,如果想发送即时消息应该用哪种协议 +TCP的连接建立和断开的过程(三次握手和四次挥手),如何保证TCP发送的信息是正确的,且保证其先后顺序不被篡改 +对HTTP协议了解多少,HTTP和HTTPS有什么区别,HTTPS的安全性是怎么实现的 + +// ali end diff --git a/opsystem b/opsystem new file mode 100644 index 0000000..60a9536 --- /dev/null +++ b/opsystem @@ -0,0 +1,27 @@ +// baidu +死锁及条件 隔离级别及实现 +Linux软中断 硬中断 +进程状态转换 进程线程区别 + + +// baidu end + + +// ali +死锁的原因及预防 +操作系统的内存管理机制 +进程和线程的区别 +讲下跳表怎么实现的 +哈夫曼编码是怎么回事 +依然是:输入URL浏览器发生了什么 +说说长连接是怎么回事,使用长连接有什么影响 +NginX如何做负载均衡 +一致性哈希的一致性是什么意思 一致性哈希是如何做哈希的 +常见的排序算法及其复杂度 +为什么tcp连接需要3次断开是4次 +进程和线程的区别,进程之间的通信方法 +死锁是什么,处理死锁的方法有哪些 +进程同步中的临界区有什么处理方法 + + +// ali end diff --git "a/spring-boot\345\256\230\346\226\271\346\226\207\346\241\243.pdf" "b/spring-boot\345\256\230\346\226\271\346\226\207\346\241\243.pdf" new file mode 100644 index 0000000..4c3c114 Binary files /dev/null and "b/spring-boot\345\256\230\346\226\271\346\226\207\346\241\243.pdf" differ diff --git a/tree b/tree new file mode 100644 index 0000000..5ac518f --- /dev/null +++ b/tree @@ -0,0 +1,11 @@ +b树和b+树的区别 + +画一个b+树 + + +// ali +讲一下堆以及堆排序 +说一下B+tree和二叉搜索树的区别?说一下二叉搜索树和AVL树、红黑树之间的差别 + + +// ali end diff --git "a/\344\272\272\346\234\210\347\245\236\350\257\235.pdf" "b/\344\272\272\346\234\210\347\245\236\350\257\235.pdf" new file mode 100644 index 0000000..79b7361 Binary files /dev/null and "b/\344\272\272\346\234\210\347\245\236\350\257\235.pdf" differ diff --git "a/\344\273\243\347\240\201\346\225\264\346\264\201\344\271\213\351\201\223(\344\270\255\346\226\207).pdf" "b/\344\273\243\347\240\201\346\225\264\346\264\201\344\271\213\351\201\223(\344\270\255\346\226\207).pdf" new file mode 100644 index 0000000..c4c9d42 Binary files /dev/null and "b/\344\273\243\347\240\201\346\225\264\346\264\201\344\271\213\351\201\223(\344\270\255\346\226\207).pdf" differ diff --git "a/\347\275\221\347\273\234\346\230\257\346\200\216\346\240\267\350\277\236\346\216\245\347\232\204.pdf" "b/\347\275\221\347\273\234\346\230\257\346\200\216\346\240\267\350\277\236\346\216\245\347\232\204.pdf" new file mode 100644 index 0000000..efbee0f Binary files /dev/null and "b/\347\275\221\347\273\234\346\230\257\346\200\216\346\240\267\350\277\236\346\216\245\347\232\204.pdf" differ diff --git "a/\351\230\277\351\207\214\345\267\264\345\267\264Java\345\274\200\345\217\221\346\211\213\345\206\214(\347\273\210\346\236\201\347\211\210).pdf" "b/\351\230\277\351\207\214\345\267\264\345\267\264Java\345\274\200\345\217\221\346\211\213\345\206\214(\347\273\210\346\236\201\347\211\210).pdf" new file mode 100644 index 0000000..cf7407b Binary files /dev/null and "b/\351\230\277\351\207\214\345\267\264\345\267\264Java\345\274\200\345\217\221\346\211\213\345\206\214(\347\273\210\346\236\201\347\211\210).pdf" differ diff --git "a/\351\253\230\345\217\257\347\224\250MySQL\357\274\232\346\236\204\345\273\272\345\201\245\345\243\256\347\232\204\346\225\260\346\215\256\344\270\255\345\277\203.pdf" "b/\351\253\230\345\217\257\347\224\250MySQL\357\274\232\346\236\204\345\273\272\345\201\245\345\243\256\347\232\204\346\225\260\346\215\256\344\270\255\345\277\203.pdf" new file mode 100644 index 0000000..447d4f1 Binary files /dev/null and "b/\351\253\230\345\217\257\347\224\250MySQL\357\274\232\346\236\204\345\273\272\345\201\245\345\243\256\347\232\204\346\225\260\346\215\256\344\270\255\345\277\203.pdf" differ