我宣布,腾讯才是宇宙的终点...... 继阳关普照、应届生房补后,在一重拳福利...... 不说了,我跪久了,站不起来了...... 这条命,以后就是我司的了。 请添加图片描述 自面试上之后再一次嗨起来

我先分享一波我的面试经历吧

六月份就收到腾讯的面试通知一共经历了三面,可谓是困难重重~

腾讯六月份面试

一面 42min 电话面试

  • 项目经历,开发中遇到什么问题,最后怎么解决的
  • TCP三次握手,拥塞控制
  • 一面更多的是聊项目,面试官没有问太多基础的知识,面试官主要是在我介绍自己项目的时候切入问问题,整个过程氛围很开心。

二面 45min 视频面试 3.21

  • 安卓的设计模式有没有了解,工厂模式之类的
  • IPC,多线程
  • hashmap相关 1.扩容因子 2.hashmap与hashtable区别 3.hashmap重写了equals方法但是不重写hashcode方***怎么样 4.haspmap查找的时间复杂度,可不可以优化 5.我说把链表改成双向链表,还可以改成avl树,b树,b+树,减少查找的时间复杂度。
  • 计网三次握手,四次挥手
  • 两道算法 1.一个简单博弈问题,两个人分别选择最大的数直到选完,求最后两个手上数的和之差,实际上是排序就行了,重点在排序算法的选择,可以直接用C++的sort函数,我自己手写了归并排序来用。 2.提供一种大小为N的CD,还告诉你有两种大小A,B的歌,每种歌的数量也告诉你为x,y,往CD里放歌,尽量利用CD的空间能放多少放多少,每首歌不可拆分放,可用的CD总数不限,求有多少种排列方式。最后理了思路,就是用递归就行了。
  • 项目相关,开发中遇到的问题及解决办法
  • 问面试官问题,问的是面试官您认为哪些能力是更重要的,面试官说是基础更重要——数据结构,计网,算法。

三面 2h10min 视频面试

  • 操作系统相关知识 1.栈内存,堆内存 2.进程,线程 3.竞争
  • 计网 1.TCP三次握手 2.TCP拥塞控制 3.浏览器访问网址,具体发生了什么 4.DNS协议怎么工作的
  • 安卓相关知识 1.activity生命周期 2.为什么要有任务栈,任务栈有什么作用 3.viewholder的作用 4.view绘制过程 5.view,window和activity之间的区别 6.OOM什么情况会发生,怎么解决
  • 两道算法题 1.a[100]中逐个填1~100的随机数,且不能重复 2.大数相乘
  • 项目经历,开发中遇到的问题及解决办法
  • 谈谈你的优点
  • 你之前腾讯面试失败,是为什么,那两道题为什么没做出来 1.那道题是输入一个字符串,从中删除n个字符,剩下的字符构成回文串,求n的最小值,确实难;另一题是无权图中两点最短路径,思路很简单就是BFS
  • 最后问问题环节 1.第一个问题问的依旧是,面试官您认为哪方面的能力或者是能力更重要,面试官说基础,操作系统,计网,数据结构算法这些。 2.最后问了面试官才知道,是QQ部门的,嘿嘿......

最后顺利入职啦~

想要想我一样收获腾讯Offer其实也不难,不管你是不是应届生,能力提升总是没错。下面就和大家分享一些准备面试的技巧

第一点:心态

首先一个,心态要好,要相信自己,稳住不要慌。

第二点:基础知识

初级所需要的知识

掌握Android 四大组件知识,深入了解相关生命周期,对于Application、Fragment、Intent常见的开发知识也必须掌握。 掌握Android 基本布局和控件的属性和使用,常用布局有LinearLayout、RelativeLayout、ConstraintLayout等,控件有TextView、ImageView、RecyclerView、ScrollView等。 对Android的资源访问使用有基本了解,了解Android针对不同国家、语言、屏幕、API的适配原理。 掌握android系统服务和工具类的使用,对网络访问和数据库操作有基本认知。 熟练掌握研发工具,如IDE、模拟器、网络代理、日志等。

中级所需要的知识

熟悉SOLID基础设计原则,掌握23种设计模式。 对于研发语言特性java/kotlin有深入理解,如反射、动态代理、apt等。 对Android架构有基础了解,对apk结构和打包原理有深入了解。 对于Android各个版本特性有基本了解,如MD设计、权限管理、doze模式等。 熟练掌握各种研发调试工具,如git、gradle、mat、layout inspector等。 掌握Handler\AsyncTask原理,熟悉多线程开发。 对绘页面制原理有初步理解,能够实现一个复杂自定义控件。 能够熟练掌握开源库的使用,如图片库(Glide\Fresco)、网络库(Volley\okhttp\Retrofit)、工具(Dagger\RxJava\EventBus)等,能够对这些常用的库进行二次封装。 熟悉应用常见的优化方法,避免编写内存泄漏的代码。

高级所需要的知识

掌握java高级特性,如JUC、线程池、NIO\BIO等;掌握jvm虚拟机知识,如内存模型、GC原理、类加载机制、线程模型等。 对Android运行环境有深入理解,理解Android沙盒机制,掌握AIDL原理及Binder通信原理,了解app和activity启动原理。 掌握热修复原理,各大厂商方案的优缺点。 对于Android事件分发有深入理解,重点掌握触摸事件机制。 深入理解Android绘制原理,理解VSYNC和surface机制和窗口原理。 深入理解Android动画原理,包括补间动画和属性动画。 对于Android安全机制有基本认知,理解Android安全原理。 深入理解端上设计范式思想,如mvc\mvp\mvvm\clean-arch等。 理解架构演进,有良好的分层和拆分思路,掌握模块化、插件化、动态部署等。 对新技术敏感,理解掌握下一代架构dynamic feature等

这里把腾讯等大厂经常问的那些题目进行了综合性的搜集整理(含答案解析)。

整理目录 整理内容(部分截图)

第一章Android 相关 第二章 性能优化 在这里插入图片描述 第三章 Java 相关 第四章 Kotlin 相关

第五章 网络相关

第六章 插件化&热修复&模块化&组件化&增量更新&Gradle

第七章.图片相关

第八章 Flutter 相关

大家可以扫码找我免费获取,希望这份资料对大家的学习和工作有所帮助。帮助大家进行知识的查漏补缺。 ↓↓↓↓↓

链接全套Android进阶资料+最新BATZ面试锦集

第三点:算法

但凡互联网大厂算法都必不可少。

作为一个过来人提醒大家:想要从事计算机技术岗位,在大学本科阶段一定要早早的刷题,打好扎实的算法与数据结构基础

时间充足的朋友建议在刷题之前看一些书

《漫画算法之旅》

《剑指 offer》

《labuladong的算法小抄》

《算法导论》

《数据结构与算法之美》

《算法面试通关40讲》

下面就是我自己根据上面书籍整理的部分知识。

算法笔记

在这里插入图片描述

第一章、动态规划系列

  • 动态规划解题套路框架
  • 动态规划答疑篇
  • 动态规划设计:最⻓递增⼦序列
  • 经典动态规划:0-1 背包问题
  • 经典动态规划:完全背包问题
  • 经典动态规划:⼦集背包问题
  • 经典动态规划:编辑距离
  • 经典动态规划:⾼楼扔鸡蛋
  • 经典动态规划:⾼楼扔鸡蛋(进阶)
  • 经典动态规划:最⻓公共⼦序列 .... ...
  • 贪⼼算法之区间调度问题
  • 团灭 LeetCode 股票买卖问题
  • 团灭 LeetCode 打家劫舍问题

第二章、数据结构系列

  • 算法学习之路
  • 学习数据结构和算法读什么书
  • ⼆叉堆详解实现优先级队列
  • LRU算法详解
  • ⼆叉搜索树操作集锦
  • 如何计算完全⼆叉树的节点数
  • 特殊数据结构:单调栈
  • 特殊数据结构:单调队列
  • 设计Twitter
  • 递归反转链表的⼀部分
  • 队列实现栈|栈实现队列

第三章、算法思维系列

  • 学习算法和刷题的思路指南
  • 回溯算法解题套路框架
  • 回溯算法团灭⼦集、排列、组合问题
  • 回溯算法最佳实践:解数独
  • 回溯算法最佳实践:括号⽣成 ⼆分查找详解
  • 双指针技巧总结
  • 滑动窗⼝技巧 ... ...
  • 信封嵌套问题
  • ⼏个反直觉的概率问题
  • 洗牌算法
  • 递归详解

第四章、高频面试系列

  • 如何实现LRU算法
  • 如何⾼效寻找素数
  • 如何⾼效进⾏模幂运算
  • 如何计算编辑距离
  • 如何运⽤⼆分查找算法
  • 如何⾼效解决接⾬⽔问题
  • 如何去除有序数组的重复元素
  • 如何寻找最⻓回⽂⼦串
  • 如何运⽤贪⼼思想玩跳跃游戏
  • 如何k个⼀组反转链表 ... ...
  • Union-Find算法应⽤
  • ⼀⾏代码就能解决的算法题
  • ⼆分查找⾼效判定⼦序列

第五章、计算机技术

  • Linux的进程、线程、⽂件描述符是什么
  • 关于 Linux shell 你必须知道的
  • Linux shell 的实⽤⼩技巧
  • ⼀⽂看懂 session 和 cookie
  • 加密算法的前⾝今世
  • Git/SQL/正则表达式的在线练习平台

总结

这份资料最具价值的就是实战项目部分。

理论部分教科书上已经足够了,但是实战的分析是很难找到的。阅读这份资料,就是在和大佬对话,相信你的收获一定不少。

PS:除了学习,这份资料还可以当做一个面试宝典来用,里面有很多大项目的组件化分析,相信你看过后再次面对面试官的时候一定能侃侃而谈。

最后在这里希望大家工作顺利,没有BUG,不加班,没有工作的朋友,面试顺利,offer不断。

有需要的朋友可以直接点击【下方的二维码】找我免费获取全套资料。

↓↓↓↓↓

链接全套Android进阶资料+最新BATZ面试锦集