是面试官放水,还是公司太缺人?这都没挂,2024的字节跳动也太好进了吧!(面经

总结:

各行各样都会淘汰一些能力差的,不仅仅是IT这个行业,所以,不要被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。

  • BAT大厂面试题、独家面试工具包,

  • 资料包括 数据结构、Kotlin、计算机网络、Framework源码、数据结构与算法、小程序、NDK、Flutter

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

面试题

Android面试题

  • ListView 如何缓存的?

  • RecyclerView联系人列表如何实现A-Z快速定位

  • 广播和EventBus的区别

  • 主线程Looper循环为什么没有卡主线程?nativePollOnce

  • SharedPreference的线程安全、进程安全,如何跨进程

  • Android 中实现多线程: threads, Handler, AsyncTask, IntentService

  • Android 中如何实现多进程

  • 自定义View的过程:measure,layout,draw

  • LayoutInflater#inflate 的 attrachToParent true 是什么意思

  • theme 和 style 有什么区别,优先级

  • 有哪些进程间通信方式

  • View 的渲染过程

  • Binder 的原理和优势

  • AIDL 中的 oneway 有什么用,方向标签 in、out、inout 是什么意思

  • Android 中有哪些动画,都说下

  • Serializable 和 Parcelable 的区别

  • 你知道哪些Layout,ConstraintLayout 的特点是什么

  • 手机开发者选项有哪些,不保留活动是什么

四大组件

  • 当内存不足时Service被杀死了,如何重启这个Service

  • Android系统杀进程时,是怎么考虑进程优先级的?

  • Fragment 的 ViewModel 如何访问到 Activity 的 ViewModel 的数据

  • Activity 4种启动模式说下,各种启动模式适合的应用场景

  • Activity 任务栈从底到顶为 A-B-C,低内存杀死进程后,重新点击,显示哪个?这时如果C里面有Fragment是怎样恢复的?

  • Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?

  • window、view 和 Activity 的关系

  • Activity、Fragment 的各个生命周期依次说一下,各个生命周期里面适合做什么

  • Activity 调用 finish 方法后怎么走到 onDestroy 的

图片

  • Glide缓存特点

  • Glide为我们做了哪些内存优化

  • Glide如何加载 GIF

  • ListView 图片错位的原因,解决方案

  • bitmap如何处理大图,30M的大图如何防止OOM?

网络

  • OKHttp 如何实现缓存

  • OKHttp 的超时时间,有考虑DNS超时码

  • OKHttp 线程池、连接池讲下

  • OKHttp 的所有拦截器有哪些,请求失败了重试1、2次怎么做❤️

  • Retrofit实现机制

  • Room注解如何在编译时生成类文件

  • http 和 https 的区别,shakehand的过程说下

  • 状态码400、401,3xx有哪些

  • 网络劫持是什么,应该怎么做

  • TCP三次握手,握手中的网络包各个标记位是多少,四次挥手说一下

  • TCP 发送窗口是什么?

  • 混合开发h5了解多少

  • 浏览器窗口访问一个网址的过程

  • POST 和 GET 有什么区别

优化

  • 内存泄漏分析,LeakCanary的原理,泄漏对象是如何找到引用链的❤️

  • APK瘦身

  • 启动优化

  • 卡顿分析!!

  • ANR分析!!

  • 为什么布局文件中层级越多,性能可能差很多

  • 你有哪些应用性能优化的经验❤️必问

  • ProGuard怎么写

Java

  • hashCode、equals

  • HashMap 请开始你的表演

  • ConcurrentHashMap 分段加锁的原理

  • 动态代理如何写

  • JVM 内存模型介绍下,哪些地方可能 OutOfMeomory

  • JVM GC 算法

  • 线程池的原理,有哪些拒绝策略

  • Java锁优化:偏向锁、轻量级锁、自旋锁讲一下

  • 为什么说反射的性能不好

Kotlin

  • Kotlin协程为什么能以同步代码写出异步逻辑?

  • suspend 函数的工作原理

  • 在协程上定义了一个局部变量,为什么在其中的其他线程里的协程也能访问到?

  • by 的两种场景,by Lazy 的实现

  • object 单例的实现

算法

  • 各种排序算法(冒泡、选择、快排、归并。。。)的时间复杂度,各种查找算法(顺序查找,二分查找。。。)的时间复杂度

  • LRU 实现(146)参考LinkedHashMap实现的3个方法

  • LFU 缓存(460) 同一频率使用LRU的NodeList,外面套一层{freq to NodeList},NodeList用双链表实现

  • 两数相加(445)

  • 找缺失的数字(268)注意相似题目里有中等

  • 两个队列实现栈(225)

  • 删除子文件夹(1233)

  • 螺旋矩阵打印(54)

  • 用生成随机数1-5(1,2,3,4,5)的方法,得到一个可以生成随机数(1-7)的方法

  • 54张扑克牌,分成3堆,大小王出现在同一堆的概率(排列组合算数题)

抽象问题

  • 讲讲做过的项目,有哪些亮点

  • 你自己的亮点在哪里,你的加入可以给团队带来什么

  • 技术规划,怎么发展

设计题

  • 如果让你设计一个音乐播放器,要实现哪些接口

  • 设计一个图片下载库:深挖 Glide,如果图片没有设置有效期,如何保证缓存被更新???

选择/建议

5-23: 拿到了蚂蚁国际的成都的意向书,终于缓一口气。

5-20:终于拿到一家的实习offer,我的简历主要投的是大厂,总数其实不多。

1.感觉快手和美团在今年4月的时候是不收人的,3月和5月面的都有面试,我那场笔试AK都有挂的。

2.阿里和字节的好处是有多条命,只要有人捞,可以一直在备胎池里仰卧起坐。然后我腾讯3个月才等来第一次面试。

3.多关注一下学校的内部论坛,比招聘软件上的信息和内推信息靠谱多了。

最近在找春招实习,投的Android方向,面试感触很深,有时候面试完忍不住大骂,但也不得不承认自己很菜,还得继续学习:

1.有的笔试极难,leetcode hard做得让人很难受,面试也会手撕medium到hard难度不等。

2.有些公司做完笔试才知道卡学历极严格,也有做完笔试才知道不招人的。

3.岗位描述和面试内容不符,多次碰到招Android 但全程不问Android的,这样就会全程尬聊。然后基础课这块确实我太弱了,这是非科最大的短板。

4.说是看重基础吧,但很多人的项目一年比一年强,高并发,分布式等越来越多。如果没有好的项目,被面试官在基础问题上反复诘问的话,容错会非常低,很弱势。

5.有些公司备胎池极深,可能受到疫情影响,有很多kpi面,等待面试的过程非常煎熬,自尊心被暴打。

6.面到现在差不多投了7,8家了,很多人还是 0 offer,心态可能扛不住,完全不能以去年的难度衡量。

7.其他答主提到了技术分工越来越细,这就导致了你在投递公司时候的其实选择范围极小,国内bat分别用go,Java,c,这就去掉2/3的大厂很难面试了。Java具体细分还会分电商,企业应用,游戏开发等等,没有对口的项目基本自断一臂。疫情打击最严重的也是Java大户滴滴美团京东,hc数量极少。

8.对非科班的歧视普遍存在,很不容易转行,同等条件下,非科班相比于科班的特长往往不会被岗位所看重。除了真的答得差的一家明确挂了,其他我全在备胎池里被无限拖,如果学历很好的同学有其他路子,没必要硬转互联网。

最后

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

同时我经过多年的收藏目前也算收集到了一套完整的学习资料以及高清详细的Android架构进阶学习导图及笔记分享给大家,希望对想成为架构师的朋友有一定的参考和帮助。

下面是部分资料截图,诚意满满:特别适合有开发经验的Android程序员们学习。

不论遇到什么困难,都不应该成为我们放弃的理由!

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

不论遇到什么困难,都不应该成为我们放弃的理由!

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 17
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个可以用Python来实现。我来给您提供一个示例代码: ```python class WaterTank: def __init__(self, capacity): self.capacity = capacity self.current_volume = 0 def add_water(self, volume): if self.current_volume + volume > self.capacity: print("水满了,感谢大家的付出!") self.current_volume = self.capacity else: self.current_volume += volume def drain_water(self, volume): if self.current_volume - volume < 0: print("水放空了,请节约用水!") self.current_volume = 0 else: self.current_volume -= volume # 初始化一个容量为10的水箱 water_tank = WaterTank(10) # 加入5升水 water_tank.add_water(5) # 放出3升水 water_tank.drain_water(3) # 再加入6升水 water_tank.add_water(6) # 放出10升水 water_tank.drain_water(10) ``` 当您执行以上代码时,会输出以下结果: ``` 水满了,感谢大家的付出! 水放空了,请节约用水! 水满了,感谢大家的付出! 水放空了,请节约用水! ``` 代码中,我们定义了一个名为WaterTank的类,它有一个属性capacity表示水箱容量,以及一个属性current_volume表示当前水箱中的水量。我们还定义了两个方法add_water和drain_water,分别用于加水和放水。 在add_water方法中,我们首先判断加入的水量是否会使水箱溢出,如果是,则输出“水满了,感谢大家的付出!”的提示信息,并将水箱的当前水量设为最大容量;如果否,则将加入的水量加到当前水量中。 在drain_water方法中,我们首先判断放出的水量是否会使水箱变空,如果是,则输出“水放空了,请节约用水!”的提示信息,并将水箱的当前水量设为0;如果否,则将放出的水量从当前水量中减去。 您可以根据自己的需求,在代码中增加更多的方法或属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值