面试IT公司的小技巧
非常不建议在简历上造假,简历上能起到关键作用、有分量的部分,别人都是有办法去核实的,比如教育背景、关键性的证书、奖项等;核实不了的,又基本上也对结果产生不了太大影响,又何必去画蛇添足呢?
简历既要真实,但又不想泯然众人,太平常;在这里为大家准备了一些小技巧,可以用来包装我们的实习/工作经历。
1.适度润色,保证言简意赅,但也要把事说清楚;不要太过冗长,事无巨细,给面试预留提问空间。用客观、专业的口吻去把项目展示出来即可(不要写流水账)
2.突出重点,有的放矢,而非平铺直叙;概述整体经过,同时重点阐述与所投递岗位相关的内容,展示自己有着满足应聘岗位要求的技术能力与专业素养
3.个人介绍部分尽量客观,以第三人的视角去陈述事实即可,无需添加太多主观描述;简历里个个人介绍主要就把个人的技术栈说清楚,适当加一些客观陈述即可,太主观的内容建议少写甚至不写
4.最后,可以把你的简历给身边的朋友、同门 or 老师看看,让他们帮忙过目,务必确保没有错别字和排版问题,简历中出现错字可能会扣不少印象分哦。
遇到过的面试题
杭州某大厂:
java里,HashMap的底层实现原理
HashMap的底层数据结构是一个数组,数组中的每个元素称为桶(bucket),每个桶实际上是一个链表。当新元素插入到HashMap中时,首先根据键的哈希码来计算出桶的位置,然后将该元素添加到该桶所对应的链表中。
当我们在HashMap中查找元素时,它首先使用键的哈希码来计算出元素所在的桶的位置,然后遍历该桶对应的链表,查找键所对应的值。由于每个桶可能包含多个元素,因此查找的时间复杂度通常为O(1)。
需要注意的是,在添加元素时,如果哈希码相同但键不同,则会在同一桶中创建一个新的链表节点,这被称为哈希冲突。为了减少哈希冲突的数量,HashMap在每个桶上设置了一个阈值,当链表长度超过阈值时,会将链表转换为红黑树,以提高查找效率。
另外,为了保持HashMap的性能,当桶的数量达到一定程度时,HashMap会自动扩容。在扩容过程中,HashMap会重新计算每个元素在新数组中的位置,这个过程是比较耗时的,因此需要在实际使用时留足够的空间以减少扩容的频率。
HashSet如何检查重复
HashSet 通过哈希表实现,使用哈希算法将元素的值转换为哈希码并存储在哈希表中。当要添加一个新元素时,HashSet 会先计算该元素的哈希码,并查找哈希表中是否已经存在相同的哈希码。
如果存在相同的哈希码,HashSet 就会调用该元素的 equals 方法进行比较,如果 equals 方法返回 true,HashSet 就认为该元素已经存在于集合中,不会将其添加到集合中。
如果哈希码没有冲突,或者哈希码冲突但是 equals 方法返回 false,HashSet 就会将元素添加到集合中。
==和equals区别
==运算符比较的是两个对象的引用是否相等,即它们是否指向内存中的同一对象。
equals()方法比较的是两个对象的内容是否相等,即它们是否具有相同的属性值。
equals如何判断两个对象相同
在Java中,对象的 equals() 方法用于判断两个对象是否相等。默认情况下,equals() 方法只是比较两个对象的内存地址是否相同,即比较引用是否相同。如果要判断对象的内容是否相同,则需要重写 equals() 方法。
介绍一下lru算法?
LRU(Least Recently Used)算法是一种常见的缓存淘汰策略,也被称为最近最少使用算法。LRU算法的核心思想是,当缓存空间不足时,优先淘汰最近最少使用的缓存数据。
具体来说,LRU算法维护一个缓存的列表,每次访问一个数据时,就将该数据移到列表的最前端,表示该数据最近被访问过。当需要淘汰数据时,就将列表尾部的数据淘汰,因为这些数据是最近最少被访问的。
LRU算法的优点是能够保证缓存中的数据都是热点数据,也就是最近被访问的数据,因此可以有效地提高缓存命中率。其缺点是实现较为复杂,需要维护一个有序的缓存列表,并且每次访问数据都需要更新列表,对性能有一定的影响。
关于TCP、UDP,你了解多少?
TCP和UDP都是网络通信协议,用于实现不同的传输需求。下面是它们的主要区别:
可靠性:TCP是一种面向连接、可靠的协议,会通过一系列的确认和重传机制保证数据的可靠性,而UDP则是无连接的协议,不保证数据的可靠性。
速度:由于TCP的可靠性机制,它的传输速度相对比较慢,而UDP则相对较快。
连接:TCP是面向连接的协议,通信双方需要先建立连接才能进行通信;而UDP则是无连接的协议,通信双方不需要先建立连接,直接发送数据即可。
应用场景:由于TCP的可靠性和连接性,它适合于一些需要确保数据传输可靠性的场景,如文件传输、邮件发送等;而UDP则适合于实时性要求较高、数据可靠性要求较低的场景,如视频直播、实时语音等。
数据库中索引,簇索引,非簇,唯一,复合,覆盖索引的区别
数据库中索引是一种用于提高查询效率的数据结构。常见的索引类型包括簇索引、非簇索引、唯一索引、复合索引和覆盖索引。
簇索引(Clustered Index):簇索引是按照数据表的主键来创建的索引。簇索引可以加速基于主键的查询,因为它将数据存储在按照主键排序的结构中,使得查找主键时可以直接定位到数据的物理位置。每个表只能创建一个簇索引。
非簇索引(Non-clustered Index):非簇索引不按照主键排序,而是将主键和索引组合在一起存储。当进行非主键查询时,数据库会使用非簇索引进行查找,然后根据查找到的主键再定位到数据的物理位置。每个表可以创建多个非簇索引。
唯一索引(Unique Index):唯一索引是指所有索引键都是唯一的。与非唯一索引相比,唯一索引可以提供更快的查询性能,因为数据库可以直接找到匹配的唯一值,而不必搜索索引的所有值。
复合索引(Composite Index):复合索引是由多个列组合而成的索引。复合索引可以提高多列查询的效率,但也会增加索引的维护成本。
覆盖索引(Covering Index):覆盖索引是指索引包含了所有查询需要的字段,因此查询可以直接使用索引进行返回结果,而不必访问表格。覆盖索引可以提高查询的效率,减少数据库的I/O操作。
mysql索引适用场景
频繁作为查询条件的列。如果一个列经常被作为查询条件,就需要给这个列加上索引,以提高查询的效率。
唯一性太低的列。如果一个列的唯一性太低,比如性别列,只有两个值,那么给这个列加索引的效率并不高,反而会影响写入的性能。
经常需要排序、分组、联合查询的列。如果一个列经常被用来进行排序、分组或联合查询,那么给这个列加上索引可以大幅提高查询效率。
数据重复度较低的列。如果一个列的数据重复度较低,也就是说这个列的不同取值数量很多,那么给这个列加索引可以大幅提高查询效率。
需要注意的是,对于一些比较小的表,即使没有索引,查询速度也会很快。而对于一些非常大的表,即使有索引也可能查询效率很低,这时可能需要对表进行分库分表等操作,以提高查询效率。