面试(1-3年)求职者总结

2023-10-28 23:38
文章标签 面试 总结 求职者

本文主要是介绍面试(1-3年)求职者总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

毕业至今已有4年的时间,近两年期间陆续面试了不少的求职的前(JAVA)、后(WEB)端开发人员,包括实习生、应届毕业生、一两年工作经验的、也有三四年工作经验的,也算见过了比较多的开发人员,想在这里做个总结,本次主要讲一讲面试和后端(java)相关的东西;

关于面试准备
先推荐一个写的不错的博客,专门关于面试的,比较详尽仔细:关于面试。我在这里简单总结几点:

1、简历要用心准备好,个人信息,特别是联系方式一定要清晰明确,自身掌握的技能要完成清晰,项目经历最好按照时间顺序,说明本人在项目中的职责,完成的工作,有什么样的提升或收获;

2、一般面试流程是电面=》HR现场面=》技术面=》结果,并不是每一个面试结果就能立马有结果,所以当面试官说回去等消息的时候,并不代表没有机会,有时候需要讨论筛选才能最终确定人选。

3、关于自我介绍,最好简明扼要,能体现自身的特点,表达流畅、自信,提前最好准备;

4、准备好扎实的基础知识,以及对经历过的项目要有足够的认识,每一个项目都是一次学习、提升的机会,一般JAVA集合类是考察的重点;

5、一般好一点的面试官会顺着知识点逐渐深入或者逐渐扩展,所以对于知识点的掌握最好全面深入,不要走马观花式的学习;

6、当遇到一些设计类的问题时,一般面试官考察的是你的思路,对问题的应变能力,对于事物观察的点;

JAVA基础(答案仅供参考,如有不对之处请批评指正)

1、HashMap源码,实现原理,JDK8以后对HashMap做了怎样的优化。
答:HashMap是基于哈希表的Map接口的非同步实现,提供所有可选的映射操作,并允许使用null值和null键,不保证映射的顺序;HashMap是一个“链表散列”的数据结构,即数组和链表的结合体;它的底层就是一个数组结构,数组中的每一项又是一个链表,每当新建一个HashMap时,就会初始化一个数组;

可参考博客:彻底搞懂JAVA集合HashMap,HashTable,ConcurrentHashMap之关联

而在JDK8中引入了红黑树的部分,当存入到数组中的链表长度大于(默认)8时,即转为红黑树;利用红黑树快速增删改查的特点提高HashMap的性能,其中会用到红黑树的插入、删除、查找等算法。本文不再对红黑树展开讨论,想了解更多红黑树数据结构的工作原理可以参考http://blog.csdn.net/v_july_v/article/details/6105630。

2、HashMap的扩容是怎样扩容的,为什么都是2的N次幂的大小。

答:可以参考上文 JAVA8系列之重新认识HashMap 有详细的讲解

3、HashMap,HashTable,ConcurrentHashMap的区别

答:
a、HashMap是非线程安全的,HashTable是线程安全的。
  b、HashMap的键和值都允许有null值存在,而HashTable则不行。
  c、因为线程安全的问题,HashMap效率比HashTable的要高。
  
  HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要满足线程安全,可以用 Collections的synchronizedMap方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap。
   Hashtable:Hashtable是遗留类,很多映射的常用功能与HashMap类似,不同的是它承自Dictionary类,并且是线程安全的,任一时间只有一个线程能写Hashtable,并发性不如ConcurrentHashMap,因为ConcurrentHashMap引入了分段锁。

4、极高并发下HashTable和ConcurrentHashMap哪个性能更好,为什么,如何实现的。

答:当然是ConcurrentHashMap,因为ConcurrentHashMap引入了分段锁,而HashTable则使用的是方法级别的锁;因此在新版本中一般不建议使用HashTable,不需要线程安全的场合可以使用HashMap,而需要线程安全的场合可以使用ConcurrentHashMap;

5、HashMap在高并发下如果没有处理线程安全会有怎样的隐患,具体表现是什么。

答:可能造成死循环,具体表现链表的循环指向;

6、JAVA中四种修饰符的限制范围。

private:修饰的成员只能在同类中别访问,而在同包、子类和其他包中都不能被访问

public:修饰的成员在同类、同包、子类(继承自本类)、其他包都可以访问

protected:修饰的成员在同类、同包、子类中可以访问,其他包中不能被访问

default:修饰的成员在同类、同包中可以访问,但其他包中不管是不是子类都不能被访问

7、Object中的方法

构造函数

hashCode():用户获取对象的hash值,用于检索

queals():用于确认两个对象是否相等;补充,哈希值相同的对象不一定equals(),但equals()的两个对象,hash值一定相等

toString():返回一个String对象,用来标识自己

getClass():返回一个class对象,打印的格式一般为 class package.name.xxx,经常用于java的反射机制

clone():用来另存一个当前存在的对象

finalize():垃圾回收的时候回用到,匿名对象回收之前会调用到

wait():用于让当前线程失去操作权限,当前线程进入等待序列

wait(long)、wait(long,int):用户设定下一次获取锁的距离当前释放锁的间隔时间

notify():用于随机通知一个持有对象锁的线程获取操作的权限

notifyAll():用于通知所有持有对象锁的线程获取操作权限

8、接口和抽象类的区别

答:一个类可以实现多个接口,但只能继承一个抽象类;抽象类可以包含具体的方法,接口所有的方法都是抽象的(JDK8开始新增功能接口中有default方法);抽象类可以声明和使用字段,接口则不能,但可以创建静态的final常量;抽象类的方法可以是protected、public、private或者默认的package,接口的方法都是public;抽象类可以定义构造函数,接口不能;接口被声明为public,省略后,包外的类不能访问接口;

9、动态代理的两种方式,以及区别

答:jdk动态代理和cglib动态代理;

JDK动态代理只能对实现了接口的类生成代理,而不能针对类;cglib是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法,因为是继承,所以该类或方法最好不要声明称final,final可以阻止继承和多态;

10、java序列化的方式

答:实现Serializable接口、实现Externalizable接口(一般只希望序列化一部分数据,其他数据都使用transient修饰的话有点麻烦,这时候可以使用externalizable接口,指定序列化的属性)

11、传值和传引用的区别,java是怎么样的,有没有传值传引用

答:首先,java中是没有指针的,只存在值传递;而我们经常看到对于对象的传递似乎有点像引用传递,可以改变对象中的某个属性的值,请不要被这个假象蒙蔽了双眼,实际上这个传入函数的值是对象引用的拷贝,即传递的是引用的地址值,所以还是按值传递;

传值调用时,改变的是形参的值,并没有改变实参的值,实参的值可以传递给形参,但是这个传递是单向的,形参不能传递会实参;

传引用调用时,如果参数是对象,无论是对象做了何种操作,都不会改变实参对象的引用,但是如果改变了对象的内容,就会改变实参对象的内容;

12、@transactional注解在什么情况下会失效,为什么。

答:一个目标对象的方法调用改目标对象的另外一个方法时,即使被调用的方法已使用了@Transactional注解标记,事务也不会有效执行;Spring的官方说明在代理下(默认或者配置为proxy-targer-class=“true”),只有当前代理类的外部方法调用注解方法时代理才会被拦截。

这篇关于面试(1-3年)求职者总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/296731

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果