1、ArrayList和LinkedList对比(一个数组、一个双向链表、查询时间、插入删除时间各有所长) 2、内存泄漏,有没有遇到过(有些无法回收的资源—一些忘记关闭的连接等) 3、OOM,有没有遇到过(一次性读入过大的数据到内存当中,导致占满,或者对象创建过多) 3、局部性原理(时间局部性、空间局部性) 4、虚拟内存(栈和堆) 5、TCP和HTTP对比(TCP是网络传输协议—传输层,HTTP是超文本传输协议——应用层,HTTP底层是TCP协议) 6、TCP和UDP对比(有连接与无连接) 7、什么是线程安全(并发情况下,保证数据最终一致性) 8、Java的线程状态(新建、就绪、运行、阻塞、死亡) 9、web应用你封装一个request对象到前端会包括哪些数据(请求行、请求头、请求体) 10、python会不会 11、说出两个线程安全的Map以及原理(hashtable,ConcurrentHashMap,HashTable继承自Dictionary,拉链法、内部用Synchronize锁  原理:ConcurrentHashMap利用乐观锁CAS请求,实现线程安全、并当节点大于8从链表扩容到红黑树。) 你遇到过什么并发的瓶颈 12、说出你知道的所有Java里面保证线程安全的方式(1、悲观锁Synchronize、2、乐观锁:reentrantlock 3、ThreadLocal保证变量线程内部单独使用 4、volatile保证线程数据可见性以及防止指令重排 5、门栓:CountDownLatch 允许一个或多个线程等待其他线程完成操作6、Semaphore 信号量) 什么是乐观锁 (与悲观锁对立,悲观锁认为每次被访问,都会被更改,乐观锁则是根据数值有没有被修改,如果在自己访问期间数值被其他线程修改,则放弃所有操作 一般以自旋方式进行,在Java中,reentrantlock是乐观锁) 13、反射(获取类的对象——getDeclearConstruction获取构造器——newInstance获取对象) 14、动态代理及应用(两种方式:1、CGlib动态代理、2JDK动态代理——基于反射机制。Spring中AOP就是基于动态代理。用于对操作进行日志记录、增强方法、事务控制,进行功能性增强且不影响原代码) 15、解释数据库范式(第一范式:所有列均不可再分,属于原子数据项 第二范式:非主键必须完全依赖于主键,不能依赖于主键的一部分 第三范式:任何非主属性 不依赖于其他非主属性) 16、spring ioc aop(IOC反转控制,DI依赖注入——反转控制的实现,aop面向切面编程) 17、垃圾收集算法(分为新生代、老年代,新生代用复制算法,在Eden、from、to区域进行复制,年龄到15放到老年代。老年代用标记清除与标记整理) 18、锁(悲观锁Synchronize、乐观锁Reentrantlock) 19、缓存() 20、重写(子类对父类方法进行重写,使对象具备子类特征) 21、springboot自动装配(在SpringBootAppliction启动类中包含SpringBootConfiguration、ComponentScan、EnableAutoConfiguration注解,其中EnableAutoConfiguration用于自动装备从spring.factories文件中的类。) 22、springboot怎么开启事务(1、在入口类加入@EnableTransactionManagement、2、在具体方法上加上@Transactional) 23、spring与springboot的区别(springboot是基于spring的上层框架、能够独立运行——继承tomcat、能够简化配置、具备自动配置功能) 24、快排思想(利用分治方法,每一次把小于目标数的放左边,大于目标数的放右边,再对左右两边重复进行) 25、为什么用快排而不用归并(空间复杂度快排空间复杂度O1,归并需要额外的On) 26、快排时间复杂度(平均为Olog2N与最坏N2) 27、msql设置了可重读后怎么保证不幻读  (1、利用快照 2、next-key lock有索引则锁住本身的行、范围则行锁+间隙锁、无索引锁整个表) 28、项目中用了redis,是单点模式还是哨兵模式(哨兵模式是指另外的服务监控现有服务的允许,如果现有服务出现错误,根据优先级,将从服务器提升为主服务器) 30、集合接口和集合类介绍一下(接口:Collection包含Queue接口——Deque接口、List接口、Set接口——sortedSet接口。 LinkedList、ArrayList、Vector、Stack、HashSet、TreeSet) 31、反射,什么地方用了反射(IOC创建实例对象、创建数据库连接等) 32、泛型(指定某个数组保存特定类型的数据) 33、jvm内存分区(线程私有:程序计数器、方法栈、虚拟机栈  线程共有:元空间(方法区)、堆) 34、final、finally、finalize(final修饰常量、类不能被继承、方法不能重写。finally与try、catch配合,一定会执行。finalize是垃圾回收后执行) 35、java支持多继承吗?接口和类是否可以多继承(类单继承、接口多继承) 36、好像是aop实现相关的一个问题 37、什么是哈希表,影响它性能的两个参数(key:value,初始容量(创建时候的容量)与加载因子0.75(哈希表满度允许值,超过这个值会进行扩容)) 38、重载和重写(重写是子类对父类,重载是一个类中多个同名放啊) 39、continue、break的区别(continue进行下一轮循环、break打破当前循环) 40、drop、delete、truncate的区别(删除表、删除固定数据、清空表中数据) 41、union、union all的区别(union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序、union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;) 42、left join、right join的区别() 43、数据库事务的ACID(原子性、一致性、持久性、隔离性) 44、数据库隔离级别(读未提交、读已提交、可重复读、序列化) 45、redis使用过吗?redis的优点(用于当缓存数据库、速度快,原子性(依靠单线程)、支持RDB、AOF持久化。) 46、Java内存分区(虚拟机栈、方法栈、程序计数器  堆、元空间) 47、单例模式的实现方式(饿汉式,懒汉式、枚举(线程安全)) 48、死锁,死锁的四个条件(互斥、请求与保持、不可剥夺、循环等待) 49、如果解决多个线程访问多个资源不死锁(1、一次性分配所有资源 2、访问顺序避免成环) 50、创建线程的方式,哪一个方式比较好?对比区别(用runnable接口和callable接口,接口可以多继承) 51、线程同步() 52、TCP的三次握手 53、定时任务如何实现的(1、使用Timer类、设定TimerTask的起始与间隔 2、ScheduledExecutorService 3、使用Spring Task)  个人问题: 0、博客,没来得及发,怪了,简历我记得写了 1、java的MAP集合 2、HTTP和HTTPs 3、浏览器获取页面的整个过程 4、多线程的Synchronize 5、乐观锁 6、TCP三次握手 7、redis为什么快 8、redis的常见数据类型 9、mysql的数据范式 10、kafka(打住了,没学这个) 11、关系型和非关系型的区别  反问: 1、学习方向
点赞 29
评论 11
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务