Java后端技术面试汇总(第三套)
1、基础题
• 怎么解决Hash冲突;(开放地址法、链地址法、再哈希法、建立公共溢出区等)
• 写出一个必然会产生死锁的伪代码;
• Spring IoC涉及到的设计模式;(工厂模式、单利模式。。)
• toString()方法什么情况下需要重写;
• 判断对象相等时,什么情况下只需要重写 equals(),什么情况下需要重写 equals(),hashcode()?
• Set内存放的元素为什么不可以重复,内部是如何保证和实现的?
• 如何保证分布式缓存的一致性(分布式缓存一致性hash算法?)?分布式session实现?
• Java 8流式迭代的好处?
• 项目中用到的JDK的哪些特性?
• 说一下TreeMap的实现原理?红黑树的性质?红黑树遍历方式有哪些?如果key冲突如何解决?setColor()方法在什么时候用?什么时候会进行旋转和颜色转换?
• Spring的bean的创建时机?依赖注入的时机?
• ArrayList和LinkList的删除一个元素的时间复杂度;(ArrayList是O(N),LinkList是O(1));
• CopyOnWriteArrayList是什么;
• 序列化和反序列化底层如何实现的(ObjectOutputStream 、ObjectInputStream、 readObject writeObject);
• 如何调试多线程的程序;
• 一个线程连着调用start两次会出现什么情况?(由于状态只有就绪、阻塞、执行,状态是无法由执行转化为执行的,所以会报不合法的状态!)
• HashMap在什么时候时间复杂度是O(1),什么时候是O(n),什么时候又是O(logn);
• wait方法能不能被重写?(wait是final类型的,不可以被重写,不仅如此,notify和notifyall都是final类型的),wait能不能被中断;
• 一个Controller调用两个Service,这两Service又都分别调用两个Dao,问其中用到了几个数据库连接池的连接?
2、网络基础
• HTTP、TCP、UDP的区别和联系;
• TCP和UDP各自的优势,知道哪些使用UDP协议的成功案例;
• TCP和UDP各用了底层什么协议;
• 单个UDP报文最大容量;
• 单个TCP报文最大容量;
• TCP报头格式、UDP报头格式;
• Server遭遇SYN Flood应当怎么处理;
• Web开发中如何防范XSS?
• 拆包和粘包的问题,如何解决,如果我们的包没有固定长度的话,我们的应用程序应该如何解决;
3、操作系统
• 为什么要内存对齐;
• 为什么会有大端小端,htol这一类函数的作用;
• top显示出来的系统信息都是什么含义;(重要!)
• Linux地址空间,怎么样进行寻址的;
• Linux如何查找目录或者文件的;
4、分布式其他
• 分库与分表带来的分布式困境与应对之策;
• Solr如何实现全天24小时索引更新;
5、Redis
• Redis插槽的分配(key的有效部分使用CRC16算法计算出哈希值,再将哈希值对16384取余,得到插槽值);
• Redis主从是怎么选取的(一种是主动切换,另一种是使用sentinel自动方式);
• Redis复制的过程;
• Redis队列应用场景;
• Redis主节点宕机了怎么办,还有没有同步的数据怎么办;
6、系统设计开放性题目
• 秒杀系统设计,超卖怎么搞;
• 你们的图片时怎么存储的,对应在数据库中时如何保存图片的信息的?
• 假如成都没有一座消防站,现在问你要建立几座消防站,每个消防站要配多少名消防官兵,多少辆消防车,请你拿出一个方案;
• 基于数组实现一个循环阻塞队列;
• 常见的ipv4地址的展现形式如“168.0.0.1”,请实现ip地址和int类型的相互转换。(使用位移的方式)
• 现网某个服务部署在多台Liunx服务器上,其中一台突然出现CPU 100%的情况,而其他服务器正常,请列举可能导致这种情况发生的原因?如果您遇到这样的情况,应如何定位?内存?CPU?发布?debug?请求量?
7、大数据量问题(后边会有专题单独讨论)
• 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?
• 海量日志数据,提取出某日访问百度次数最多的那个IP;
• 一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,给出时间复杂度分析。
此话题后边会有专门的文章探讨,如果有等不及的小伙伴,可以移步参考:
1、https://blog.csdn.net/v_july_...
2、https://blog.csdn.net/v_july_...
8、逻辑思维题
• 有两根粗细均匀的香(烧香拜佛的香),每一根烧完都花一个小时,怎么样能够得到15min?
• 假定你有8个撞球,其中有1个球比其他的球稍重,如果只能利用天平来断定哪一个球重,要找到较重的球,要称几次?(2次);
• 实验室里有1000个一模一样的瓶子,但是其中的一瓶有毒。可以用实验室的小白鼠来测试哪一瓶是毒药。如果小白鼠喝掉毒药的话,会在一个星期的时候死去,其他瓶子里的药水没有任何副作用。请问最少用多少只小白鼠可以在一个星期以内查出哪瓶是毒药;(答案是10只)
• 假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水;
5-》6 6差1满
5-》6 6满5剩4
6倒掉,5剩4倒入6,6差2满,5取满倒入6,5剩3
Java后端技术面试汇总(第三套)的更多相关文章
- Java后端技术面试汇总(第五套)
1.Java相关 • 乐观悲观锁的设计,如何保证原子性,解决的问题:• char和double的字节,以及在内存的分布是怎样:• 对象内存布局,然后讲下对象的死亡过程?• 对象头,详细讲下:• syn ...
- Java后端技术面试汇总(第四套)
1.Java基础 • 为什么JVM调优经常会将-Xms和-Xmx参数设置成一样:• Java线程池的核心属性以及处理流程:• Java内存模型,方法区存什么:• CMS垃圾回收过程:• Full GC ...
- Java后端技术面试汇总(第一套)
面试汇总,整理一波,doc文档可点击[此处下载] 1.基础篇 1.1.Java基础 • 面向对象的特征:继承.封装和多态• final, finally, finalize 的区别• Exceptio ...
- Java后端技术面试汇总(第二套)
1.Java相关 • Arraylist与LinkedList默认空间是多少:• Arraylist与LinkedList区别与各自的优势List 和 Map 区别:• 谈谈HashMap,哈希表解决 ...
- Java后端技术微信交流群!工作、学习、技术、资源等!期待你的加入!
<Java后端技术>专注Java相关技术:SSM.Spring全家桶.微服务.MySQL.MyCat.集群.分布式.中间件.Linux.网络.多线程,偶尔讲点运维Jenkins.Nexus ...
- 4000字干货长文!从校招和社招的角度说说如何准备Java后端大厂面试?
插个题外话,为了写好这篇文章内容,我自己前前后后花了一周的时间来总结完善,文章内容应该适用于每一个学习 Java 的朋友!我觉得这篇文章的很多东西也是我自己写给自己的,比如从大厂招聘要求中我们能看到哪 ...
- Java后端技术书单
写博客记录技术上使用的各种问题,这个只能算是一个打游击. 如果要把一个知识学透,最有效的方式就是系统学习,而系统学习就是看书,书本上有清晰的学习路线以及相应的技术栈. 下面是我收集的Java后端的技术 ...
- Java技术面试汇总
1.servlet执行流程 客户端发出http请求,web服务器将请求转发到servlet容器,servlet容器解析url并根据web.xml找到相对应的servlet,并将request.resp ...
- java后端技术
技术概论:Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis+KafKa j2ee分布式架构 我在恒生工作,主要开发金融互联网第三方平台的对接项目.目前已经对接 ...
随机推荐
- python全栈开发第6天
作业一:1) 开启Linux系统前添加一块大小为15G的SCSI硬盘 2) 开启系统,右击桌面,打开终端 3) 为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区 ...
- python - linux下 no module named pip
有网络的情况下,linux系统提示无法使用pip命令: 有两种解决方式: 第一种: =============================== 敲命令:python -m ensurepip 得到 ...
- 学习 C++ 读什么书
C++ 看什么书? 很多莘莘学子,想要在这条路上前进,却是踽踽独行,摸不到门路.就像我当初是一样的.在没有一个前辈带路的情况下,想要自己一个人摸索前进,那份迷茫,深深的刻进自己的记忆里. 下面 ...
- 【转】java导出多个excel表格,并压缩成zip输出
转自:http://blog.csdn.net/qq_14861089/article/details/53169414 感谢作者分享 /** * 导出支付宝批量支付文件excel * * @p ...
- CentOS6.8安装Oracle11g
===== 这中间还有很多细节问题该文档中并没有说明和指出: 1.如/tmp目录必须单独分出来,不然oracle在以后的使用中会逐渐变慢 2.官网说的512M内存即可,这里纠正下,如果只是测试安装那还 ...
- linux 基础 VIM 编辑器
- springboot整合mybatis时java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
时区问题造成的,解决方法是在数据源配置文件中在数据库链接处增加参数&serverTimezone=GMT%2B8对时区进行配置,配置为东八区. 修改前:spring.datasource.ur ...
- bazel编译im2txt的问题
问题: 原本可以正常运行的程序,出现找不到tensorflow的问题.打印出来sys.version和sys.path,发现python版本并不是conda环境的版本 (tensorflow) yua ...
- 添加额外yun源
.yum install jq 发没有jq安装包,无法安装 .下载并安装EPEL [root@node2 coredns]# wget http://dl.fedoraproject.org/pub/ ...
- 【Linux】【一】linux 目录切换、创建目录和文件、编辑目录以及文件(txt)
以下 是在指定目录下创建文件夹目录,以及在该目录下创建txt文件进行编辑,保存. 然后删除相关文件以及目录的命令操作记录. 本操作记录中的命令简单解释: pwd 显示当前路径 ls 显示当前目录下的文 ...