字节测开面试笔记

字节跳动测开岗面试:

1、static关键字:为特定数据类型或对象分配单一的存储空间,与创建对象的个数无关;在不创建对象的情况下,可以通过类来直接调用方法或实用类的属性。
1)static成员变量:Java提供了两种类型变量:用static关键字修饰的静态变量,和没有用static修饰的实例变量。静态变量属于类,在内存中只有一个副本。只要静态变量所在的类被加载,这个静态类就会被分配空间,因此可以被使用。对静态变量引用有两种方式:“类 . 静态变量”和“对象 . 静态变量”。
2)static成员方法:static方法是类的方法,不需要创建对象就能被使用。static方法中不能使用this和super关键字,不能调用非static方法,只能访问所属类的静态成员变量和成员方法。
3)实现单例模式:单例模式特点只有一个实例,把构造方法申明为private,提供一个创建对象的方法。因此外界只能通过该类提供的方法来获取类的对象,把创建对象的方法声明为static。
4)static代码块:用来初始化静态变量,在类中是独立于成员变量和成员函数的代码块。
5)static内部类:不依赖于外部类实例对象而被实例化,不能与外部类有相同的名字,不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态成员方法,只有内部类才能被申明为static。

2、protect关键字:其修饰的成员可以被本类、同包下的类、本类的所有子类(被子类通过继承的方式直接拿来使用)所访问。

3、数组与链表的区别:数组是由下标索引和数据两部分组成,链表是由数据和指向下一个数据的指针地址两部分组成。
数组:1)在内存中,数组是一块连续的区域
2)数组需要预留空间,在使用前要先申请占内存的大小
3)插入和删除数据效率低,插入数据时,该位置后面的数据在内存中都要向后移动,删除数据时,该数据后面的数据都要向前移动
4)随机读取效率高,数组是连续的,知道每一个数据的内存地址可直接找到给地址的数据。
5)不利于扩展,数组空间不够时要重新定义数组
链表:1)在内存中可以存放在任何地方,不要求连续
2)每一个数据都保存了下一个数据的内存地址,通过该地址能找到下一个数据
3)增加数据和删除数据效率高
4)查询数据效率低,不具有随机访问性,每次查询都将从链表头部开始遍历
5)不指令大小,扩展方便
HashMap:
基于Map接口实现,元素以键值对的形式存储,并且允许使用null键和null值,key不允许重复,因此只能由一个键为null,不保证元素顺序,并且顺序不能相同,线程不安全。

数据存储结构:数组+链表:采用Entry数组来存储key-value对,每一个键值对组成了一个Entry实体,Entry类实际上是一个单向的链表结构,它具有Next指针,可以连接下一个Entry实体,以此来解决Hash冲突的问题。
数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。元素是按照 hash(key.hashCode())%len 规则存储到数组中,比如 12%16=12,28%16=12,108%16=12,140%16=12(len = 16),所以12、28、108以及140都存储在数组下标为12的位置

JDK1.8中做出改变,当链表长度大于8时,采用数组+链表+红黑树的存储方式:

HashMap vs HahTable:
1) 线程安全:Hashtable是线程安全的,实现方法里面都添加了synchronized关键字来确保线程同步;而HashMap则非线程安全,相对而言性能会高一些在多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法来获取一个线程安全的集合
2)针对null的不同:HashMap可以使用null作为key(尽量避免),当以null作为key时,总是存储在table数组的第一个节点上;而Hashtable则不允许null作为key
3)继承结构:HashMap是对Map接口的实现,HashTable实现了Map接口和Dictionary抽象类
4)初始容量和扩容:HashMap的初始容量为16,Hashtable初始容量为11,两者的填充因子默认都是0.75;HashMap扩容时是当前容量翻倍即:capacity*2,Hashtable扩容时是当前容量翻倍+1即:capacity*2+1
5)计算hash的方法不同:Hashtable计算hash是直接使用key的hashcode对table数组的长度直接进行取模HashMap计算hash对key的hashcode进行了二次hash,以获得更好的散列值,然后对table数组长度取模

#字节跳动##测试开发工程师##校招##面经#
全部评论
我怀疑这是面的JAVA
点赞 回复 分享
发布于 2021-03-23 16:29
楼主你好,请问你是实习、校招还是社招?
点赞 回复 分享
发布于 2020-07-04 21:32

相关推荐

07-02 10:44
门头沟学院 C++
码农索隆:太实诚了,告诉hr,你能实习至少6个月
点赞 评论 收藏
分享
就前几天旅游的时候,打开抖音就经常刷到这类视频:以前是高学历学生、老师、主持人,现在做着团播、擦边主播的工作,以及那些经过精心包装的“职业转型”故事——从铺天盖地的VLOG到所谓的“04年夜场工作日记”,这些内容在初中升学、高考放榜等关键时间节点持续发酵。可以说非常直接且精准地在潜移默化地影响着心智尚未成熟的青少年,使其对特殊行业逐渐脱敏。那我就想问了:某些传播公司、平台运营者甚至某些夜场的老板,你们究竟在传递怎样的价值观?点开那些视频,评论区里也是呈现明显的两极分化:一种是​​经济下行论​​:“现在就业市场已经艰难到这种程度了吗?”​​一种是事实反驳派​​:这些创作者往往拥有名校背景,从事着...
牛客刘北:被环境教育的,为了能拿到足够的钱养活自己,不甘心也得甘心,现在的短视频传播的思想的确很扭曲,但是很明显,互联网玩上一年你就能全款提A6,但你全心全意不吃不喝工作一年未必能提A6,但是在高考中考出现这个的确很扭曲,在向大家传播“不上学,玩互联网也可以轻松年入百万”,不是人变了,是社会在变
预测一下26届秋招形势
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 13:05
点赞 评论 收藏
分享
评论
8
40
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务