【面经】京东Android工程师(一二面+HR面)

一面

基本的数据类型有哪些?

String、StringBuilder、StringBuffer的区别?

String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间

StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量

StringBuilder是可变类,速度更快,单线程操作字符串,但线程不安全

Fragment是什么,使用场景和生命周期

说一下Context和内存泄露

线程创建的方法?

Activity的启动模式和适用场景?

ViewPager用过吗?然后扯到了它和Fragment联合;


二面

自我介绍

介绍一下项目经历,项目中遇到最大的问题是什么?怎么解决的?

用过什么第三方库吗?说一下Glide和Picasso有什么区别?

如果让你自己设计图片框架,该怎么操作?

内存泄露和内存溢出说一下

(1)内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。

(2)内存溢出out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。

内存溢出的原因及解决方法

1.内存溢出原因:

内存中加载的数据量过于庞大,如一次从数据库取出过多数据;

集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;

代码中存在死循环或循环产生过多重复的对象实体;

使用的第三方软件中的BUG;

启动参数内存值设定的过小

2.内存溢出的解决方案:

第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)

第二步,检查错误日志,查看“OutOfMemory”错误前是否有其 它异常或错误。

第三步,对代码进行走查和分析,找出可能发生内存溢出的位置。

垃圾回收机制说一下?

有什么想问我的吗?


三面(HR面)

自我介绍

你对京东的了解有多少?

为什么选择离职?是上一家公司不好吗?

你期望的薪资是多少?

有什么想问我的吗?


#面经##京东#
全部评论
全程有手撕算法吗
点赞 回复
分享
发布于 2022-03-23 19:00

相关推荐

头像
不愿透露姓名的神秘牛友
03-13 10:56
点赞 评论 收藏
转发
点赞 5 评论
分享
牛客网
牛客企业服务