「阿里java面试」阿里java面试要求
本篇文章给大家谈谈阿里java面试,以及阿里java面试要求对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
阿里巴巴资深java工程师什么水平
你好,如阿里百度腾讯等互联网大厂的工程师,资深(架构师水平)工程师是非常有实力的。
以阿里为例:
1、阿里工程师岗位职级
阿里巴巴集团采用双序列职业发展体系:
一套体系是专家路线【P序列=技术岗】,程序员、工程师,某一个专业领域的人才,一共分为14级,从P1到P14,目前校招最低从P4开始。
一套体系是M路线,即管理者路线【M序列=管理岗】,从M1到M10。
一般来说,应届毕业生刚入职到阿里为P5,工作1-3年之后升职到P6,阿里一般到P7才给配股票。
目前阿里需求量最大的职级范围分布在P6-P8,这也是阿里集团占比最大的级别。P6级别的程序员title是高级工程师,P7便已经是专家级别,P8则是高级专家。一般而言,小有名气的阿里程序员至少也是P8级别。P10级别的存在就是传说中的大神级别,这个级别的程序员无一不是业界鼎鼎有名的人物,比如褚霸、毕玄等等。
2、阿里岗位薪酬
阿里薪资结构:一般是12+1+3=16薪。
年底的奖金为0-6个月薪资,90%人可拿到3个。
股票是工作满2年才能拿,第一次拿50%,4年能全部拿完。
关于阿里股票,主要是阿里用来奖励员工忠诚度的,所以阿里分年限行权,想要离职套现真的是很难,更不要提高额税收了。
3、阿里工程师晋升体系
阿里的工程师一般工作几年后就要考虑转P(技术)系列还是M(管理)系列了。
P虽然是专家系列但是到了一定级别也会带人,比如P9的整个业务都会由他带。M相对P来说比较难升,很多P做了5-10年缺少升M的资历。
和腾讯一样,阿里也是一年有两次晋升机会,其中7、8月是比较核心层级的晋升,如P7、P8、P9,年底则是较低级别的。
考核因素是上一年的绩效分数+直属领导的打分+晋升委员会打分,这里的委员会一般由直属领导+合作方的高管+懂业务的HRG组成。HRG:HR多面手,base在业务下面,在阿里话语权比别的互联网HR高。
晋升标准:绩效满足3.75、主管提名、技术答辩通过。
P8架构师作为阿里「IT架构灵魂人物」的角色,他们不仅做着架构师的本职工作,还同时做程序开发,写核心代码的工作。另外,架构师依旧是技术高手,编程能力依然是一流的。
但根据当前的市场需求,互联网大厂们对于普通Java开发人才需求逐年锐减,而对互联网架构师人才的需求招聘量已经上升到50%,因此薪资更是不可同日而语。
对于想学习互联网架构师的同学来说,北大青鸟、课工场等优秀品牌都是不错的选择。课程根据招聘需求制定,包含全部分布式微服务技术,对标阿里P8级别架构师。
希望我的回答对你有所帮助!
阿里面试官:讲解一下JNI的三种引用
从Java虚拟机创建的对象传到本地 C/C++ 代码时就会产生引用。根据Java的垃圾回收机制,只要有引用存在就不会触发该引用指向的Java对象的垃圾回收。这些引用在 JNI 中分为三种
全局引用 (Global Reference)
局部引用 (Local Reference)
弱全局引用 (Weak Global Reference), JDK 1.2 引入
最常见的引用类型,基本上通过JNI返回来的引用都是局部引用
例如,使用NewObject就会返回创建出来的实例的局部引用。局部引用只在该native函数中有效,所有在该函数中产生的局部引用,都会在函数返回的时候自动释放(freed)。也可以使用DeleteLocalRef函数进行手动释放该引用。
想一想既然局部引用能够在函数返回时自动释放,为什么还需要DeleteLocalRef函数呢?
实际上局部引用存在,就会防止其指向的对象被垃圾回收。尤其是当一个局部引用指向一个很庞大的对象,或是在一个循环中生成了局部应用;最好的做法就是在使用完该对象后,或在该循环尾部把这个引用释放掉,以确保在垃圾回收器被触发的时候被回收。
在局部引用的有效期中,可以传递到别的本地函数中,要强调的是它的有效期仍然只在一次的Java本地函数调用中,所以千万不能用C++全局变量保存它或是把它定义为C++静态局部变量。
全局引用可以跨越当前线程,在多个native函数中有效,不过需要编程人员手动来释放该引用。全局引用存在期间会防止在Java的垃圾回收的回收。
与局部引用不同,全局引用的创建不是由 JNI 自动创建的,全局引用需要调用 NewGlobalRef 函数,而释放它需要使用 ReleaseGlobalRef 函数。
弱全局应用是 JDK 1.2 新出来的功能,与全局引用相似,创建跟释放都需要由编程人员来进行操作。这种引用与全局引用一样可以在多个本地代码有效,也可以跨越多线程有效;不一样的是,这种引用将不会阻止垃圾回收器回收这个引用所指向的对象。
使用 NewWeakGlobalRef 跟 ReleaseWeakGlobalRef 来产生和释放应用。
IsSameObject 函数对于弱引用全局应用还有一个特别的功能,把NULL传入要比较的对象中,就能够判断弱全局引用所指向的Java对象是否被回收。
获取 jfieldID与jmethodID 的时候会通过该属性/方法名称加上签名来查询相应的 jfieldID/jmethodID。这种查询相对来说开销较大。在开发中可以将这些 FieldID/MethodID 缓存起来,这样就只需要查询一次,以后就使用缓存起来的 FieldID/MethodID。
下面介绍两种缓存方式
在使用时缓存 (Caching at the Point of Use)
在Java类初始化时缓存 (Caching at the Defining Class's Inititalizer)
在native 代码中使用static局部变量来保存已经查询过的jfieldID/jmethodID ,这样就不会在每次的函数调用时查询,而只要一次查询成功后就保存起来了。
不过这种情况下,就不得不考虑多线程同时调用此函数时可能导致同时查询的并发问题,不过这种情况是无害的,因为查询同一个属性或者方法的ID,通常返回的值是一样的。
更好的一个方式就是在任何native函数调用之前把id全部缓存起来。
可以让Java在第一次加载这个类的时候,首先调用本地代码初始化所有的 jfieldID/jmethodID,这样的话就可以省去多次判断id是否存在的冗余代码。当然,这些 jfieldID/jmethodID 是定义在C/C++ 的全局。
使用这种方式还有好处,当Java类卸载或者重新加载的时候,也会重新调用该本地代码来重新计算IDs。
java代码
C/C++ 代码
最简单的Java调用C/C++函数的方法
获取方法/属性的ID;学会了获取/设置属性;还有Java函数的调用
Java/C++之间的字符串的转换问题
在C/C++下如何操作Java的数组
三种引用方式
如何缓存属性/方法的ID
使用了JNI,那么这个Java应用将不能跨平台了。如果要移植到别的平台上,那么native代码就需要重新进行编写
Java是强类型的语言,而C/C++不是。因此,必须在写JNI时倍加小心
总之,必须在构建Java程序的时候,尽量不用或者少用本地代码
附
异常处理
C/C++ 如何启动JVM
JNI与多线程
java 一道算法题,阿里面试的题,我同学给我的,希望有人解答下?
HashMapString, Object ihp = new LinkedHashMapString, Object();
自定义一个类
static class MyMap
{
List[] lists;
public MyMap(List... lists)
{
this.lists = lists;
}
public String toString()
{
if (lists == null || lists.length == 0)
{
return "{}";
}
StringBuilder sb = new StringBuilder();
sb.append('{');
int i = 0;
for (List list: lists)
{
sb.append(list);
i++;
if (i == lists.length)
return sb.append('}').toString();
sb.append(",");
}
return "{}";
}
}
ihp.put("on1",new MyMap(list2,list1));
ihp.put("on2",new MyMap(list4,list3));
ihp.put("on3",new MyMap(list5));
ihp.put("on4",new MyMap(list6));
System.out.println(ihp.toString());
估计有更好的办法,最开始想到的是List[],发现打印出来是[[xxx,xxx,xxx],[xx,x,x]]这种结构
阿里java第二轮面试40分钟结束有戏吗
有机会成功的,面试时间长,有可能是面试官对你的技术比较感兴趣,喜欢和你多聊一会儿的。
关于阿里java面试和阿里java面试要求的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-23,除非注明,否则均为
原创文章,转载请注明出处。