兴业数金-23届秋招-后端一面

1、为什么将栈和堆划分开?
第一,从软件设计的角度看,栈代表了处理逻辑,而堆代表了数据。这样分开,使得处理逻辑更为清晰。分而治之的思想。这种隔离、模块化的思想在软件设计的方方面面都有体现。
第二,堆与栈的分离,使得堆中的内容可以被多个栈共享(也可以理解为多个线程访问同一个对象)。这种共享的收益是很多的。一方面这种共享提供了一种有效的数据交互方式(如:共享内存),另一方面,堆中的共享常量和缓存可以被所有栈访问,节省了空间。
第三,栈因为运行时的需要,比如保存系统运行的上下文,需要进行地址段的划分。由于栈只能向上增长,因此就会限制住栈存储内容的能力。而堆不同,堆中的对象是可以根据需要动态增长的,因此栈和堆的拆分,使得动态增长成为可能,相应栈中只需记录堆中的一个地址即可。
第四,面向对象就是堆和栈的完美结合。其实,面向对象方式的程序与以前结构化的程序在执行上没有任何区别。但是,面向对象的引入,使得对待问题的思考方式发生了改变,而更接近于自然方式的思考。当我们把对象拆开,你会发现,对象的属性其实就是数据,存放在堆中;而对象的行为(方法),就是运行逻辑,放在栈中。
2、集合有哪些接口、ArrayList与LinkedList的区别,ArrayList扩容机制、
(1)List,Set,Queue,Map
(2)ArrayList底层是数组,LinkedList底层是双向链表。
(3)初始化容量为10,添加元素时若超出容量,按当前容量的1.5倍扩容。
3、Java中实现双向链表的数据结构有哪些?
LinkedList,LinkedHashMap
4、TCP/IP协议
应用层、传输层、网络层、链路层

5、数据结构(寻字符串子串的算法)
只知道KMP算法
6、redis有哪些数据类型及其操作
String(set,get,del),List(LinkedList)(lpush,rpush,lpop,rpop),Hash(hset,hget,hdel),Set(sadd,srem),Zset
7、Mysql与Redis的区别?
            NOSQL和关系型数据库比较
                1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
                2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。redis用于存储使用较为频繁的数据到缓存中,读取速度快。
                3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
                4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。
8、mysql事务的特性?ACID
9、rabbitMQ如何防止消息丢失?
    (1)confirm消息确认机制:生产端投递消息一旦投递到RabbitMQ后,RabbitMQ就会发送一个确认消息给生产端
    (2)消息持久化
10、SpringBoot的特点,以及常用的注解有哪些?
(1)配置便捷,开箱即用,自动配置
(2)@SpringBootApplication,@Controller,@Entity,@Repository,@ResponseBody
11、有没有使用过docker?没有

#兴业数金面试##兴业数金校招#
全部评论
第一题回答的真的太好了,就凭第一题的回答,我觉得这面试也过了吧
6 回复 分享
发布于 2022-08-03 20:06
第一题答了这么多啊
1 回复 分享
发布于 2022-08-05 13:02
寻字符串子串的算法: 1、左端模式串匹配算法:暴力匹配,从字符串左端开始,逐个匹配(主要是回溯消耗时间) 2、KMP快速匹配算法(研究模式串):找出不匹配字符前的最长公共前后缀,移动模式串,将前缀移动到后缀的位置
点赞 回复 分享
发布于 2022-08-02 18:45
数据库也能存文件图片,blob
点赞 回复 分享
发布于 2022-09-17 10:29 广东

相关推荐

想去夏威夷的小哥哥在度假:5和6才是重点
点赞 评论 收藏
分享
11 70 评论
分享
牛客网
牛客企业服务