说在前面,千万不要频繁跳槽。

本来华为很想去的,面试前花了一个月的时间准备,面试过程挺顺利的,也拒绝了其他的所有面试邀请,而我拒绝其他面试邀请的底气,则是之前面试过程中的良好表现,薪资和定级都谈好了。

HR给出的拒绝理由是:在工作的3年内,换了4份工作,其中有2份单位的工作时间在半年左右,工作不是很稳定。

我在入职表上还有面试时已经说明情况了,直接说不用去面试就行了,搞心态就有点难受了。

我是面试Android开发的,3年经验,下面是面试流程:

一面:

  1. 包括自我介绍

  2. 工作经历

  3. 做过哪些项目,在项目中扮演什么样的角色,遇到了什么困难,是怎么解决的。

  4. 开发常用的一些库等等

  5. 最后问了一些职业规划

二面(笔试)

java基础的比较多,两道算法题,然后是Android相关的题

三面是技术面

  1. 面试官开始让介绍所做的一些项目,技术点之类的

  2. 然后就逮着技术点进行深入挖掘

  3. 设计模式六原则

  4. 子线程怎么用handler

  5. 问网页连接怎么启动本地app.

  6. android四大组件Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。

  7. 2 ANR(ActivityNot Respone)(无响应)先介绍下Main线程(也称为UI线程、主线程)

  8. 功能: 1.创建UI控件2.更新UI控件状态3.事件处理 限制:Main线程不建议有超过5秒的事件 出现条件: 当用户输入事件5s内没有得到响应,将弹出ANR对话框 广播接收者的onReceive()执行时间超过10s解决方案(原则): 所有可能的耗时操作都要在子线程()中执行 常见耗时操作:I/O:网络操作SDcard数据运算

  9. FC(Force close)原因:1.Error OOM(out of memory error) StackOverFlowError

  10. RuntimeException解决办法: 看日志

  11. 针对项目问了具体的问题

  12. 问一下Java的基础技术问题,多线程,jvm相关。

13.Android部分主要问的也是一般的基础性的问题。

四面是综合面

  1. 为什么离职

  2. 有没有职业规划

  3. 对公司未来的展望

4.以前公司的薪资待遇

  1. 期待的薪资

技术知识梳理目录

一、Android基础+进阶

1.Activity启动模式

2.Activity的启动过程

3.进程通讯

4.Android Binder之应用层总结与分析

5.进程保活方法

6.从源码了解handler looper ,messageQueue思路

7.handler如何实现延时发消息postdelay()

8.Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

9.RxJava原理及如何封装使用

10.okhttp源码分析

11.retrofit源码分析

......

12.LeakCanary核心原理源码浅析

13.LruCache 使用及原理

14.ARouter原理

15.注解框架实现原理

16.Android 如何编写基于编译时注解的项目

17.RxJava2+Retrofit2+OkHttp3的基础、封装和项目中的使用

18.Rxjava2.0+Retrofit+Okhttp(封装使用)+MVP框架搭建

19.Android 插件化和热修复知识梳理

20.Android开发中比较常见的内存泄漏问题及解决办法

21.如何检测和定位Android内存泄漏

22.图片占据的内存算法

23.为什么图片需要用软引用,MVP模式中的view接口用弱引用

24.基于DataBinding与LiveData的MVVM实践

25.App稳定性优化

26.App启动速度优化

27.App内存优化

28.App绘制优化

29.App瘦身

30.网络优化

31.App电量优化

32.安卓的安全优化

33.为什么WebView加载会慢呢?

34.如何优化自定义View

二、Java基础+进阶

1.HashMap

2.ArrayList

3.LinkedList

4.Hashset源码分析

5.内存模型

6.垃圾回收算法(JVM)

7.垃圾回收机制和调用 System.gc()的区别?

8.类加载过程

9.反射

10.多线程和线程池

11.创建多线程方式、线程池工作原理

12.设计模式(六大基本原则、项目中常用的设计模式、手写单例等)

13.断点续传

14.Java 四大引用

15.Java 的泛型

16.接口、抽象类的区别

17.从 java 容器类的设计讨论抽象类和接口的应用

三、数据结构与算法面试题

1.常用的数据结构有哪些?

2.数组

(1).如何在一个1到100的整数数组中找到丢失的数字

(2).如何在给定的整数数组中找到重复的数字? (小米)

(3).如何在未排序整数数组中找到最大值和最小值?(字节跳动)

(4).在Java中如何从给定数组中删除多重复制?

(5).大数相加(今日头条)

3.链表

(1).那查询第一个跟倒数第二个呢?(这就不一样了,第一个直接给了头结点,倒数第二个需要从倒数第一个开始查询,走两步) (腾讯)

(2).arrayList底层原理 (滴滴)

(3).如何在一次遍历中找到单个链表的中值?(中国平安)

(4).如何证明给定的链表是否包含循环?如何找到循环的头节点?(优酷)

(5).两个有交叉的单链表,求交叉点 (华为)

(6).如何得到单链表的长度?(360)

(7).如何在不使用递归的情况下逆转单链表?(小米/美团)

(8).怎么判断链表有环? (滴滴)

4.队列&堆栈

(1).如何使用栈实现队列的功能(广州荔枝FM)

(2).两个栈实现一个队列(蘑菇街)

(3).两个队列实现一个栈 (腾讯)

(4).对比一下队列和栈,以及它们底部实现 (腾讯)

5.二叉树

(1).如何在给定的二叉树中执行先序遍历?(百度)

(2).如何实现后序遍历算法?(百度)

(3).如何在给定数组中执行二分法搜索?(苏宁)

(4).已知前序遍历为{1,2,4,7,3,5,6,8},中序遍历为{4,7,2,1,5,3,8,6},它的二叉树是怎么样的?

(5).输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。 (爱奇艺)

(6).请实现两个函数,分别用来序列化二叉树和反序列化二叉树(YY)

(7).平衡二叉树和红黑树的区别?(字节跳动)

(8).什么是平衡二叉树,它有什么特征 (美团)

(9).B 树,B+树

6.HashMap

(1).HashMap的底层原理是什么?线程安全么? (百度)

(2).HashMap中put是如何实现的? (滴滴)

(3).谈一下hashMap中什么时候需要进行扩容,扩容resize()又是如何实现的?

(4).什么是哈希碰撞?怎么解决? (滴滴)

(5).HashMap和HashTable的区别 (小米)

(6).HashMap中什么时候需要进行扩容,扩容resize()是如何实现的? (滴滴)

(7).hashmap concurrenthashmap原理 (美团)

(8).arraylist和hashmap的区别,为什么取数快?(字节跳动)

7.图

(1).旋转输出矩阵

(2).给定一个矩阵 int matrixA[m][n],每行每列都是增序的,实现一个算法去寻找矩阵中的某个元素 element. 搜狗

8.排序算法有哪些?

9.查找算法

10.串

四、计算机网络部分

1.HTTP协议

2.TCP/IP协议

3.TCP的三次握手与四次挥手理解及面试题

4.网页中输入url,到渲染整个界面的整个过程,以及中间用了什么协议?

5.TCP和UDP的区别?

6.HTTP的几种请求方法具体介绍

7.HTTP请求和响应报文的格式,以及常用状态码

8.一个 TCP 连接上面能发多少个 HTTP 请求

由于篇幅原因,以上完整学习笔记pdf如有需要,可以 点赞+评论 支持下我这个打工人,然后点击这里免费自取

花1个月时间准备 面试华为,薪资和定级都谈好了却被拒,HR竟说......的更多相关文章

  1. 工作之余,花2个月时间系统学习前端和PHP

    http://www.jikexueyuan.com/path/web/ http://www.jikexueyuan.com/path/php/

  2. 花了一个月的时间在一个oj网站只刷了这些题,从此入门了绝大多数算法

    如果你想入门算法,那么我这篇文章也许可以帮到你. oj网站有这么多,当然还有其他的.我当初是在hdu上面刷的,不要问我为什么,问就是当时我也是一个新手,懵懵懂懂就刷起来了.点这里可以进入这个网站htt ...

  3. 我想立刻辞职,然后闭关学习编程语言,我给自己3个月时间学习C语言!这样行的通吗

    文章背景,回答提问:我想立刻辞职,然后闭关学习编程语言,我给自己3个月时间学习C语言!这样行的通吗? 我的建议是这样:1. 不要辞职.首先说,你对整个开发没有一个简单的了解,或一个系统的入门学习.换句 ...

  4. 题外话:我想立刻辞职,然后闭关学习编程语言,我给自己3个月时间学习C语言!这样行的通吗

    以下文章虽然是编程,但是对于IT行业都通用 文章背景,回答提问:我想立刻辞职,然后闭关学习编程语言,我给自己3个月时间学习C语言!这样行的通吗? 我的建议是这样:1. 不要辞职.首先说,你对整个开发没 ...

  5. SQL Server时间粒度系列----第3节旬、月时间粒度详解

    本文目录列表: 1.SQL Server旬时间粒度2.SQL Server月有关时间粒度 3.SQL Server函数重构 4.总结语 5.参考清单列表   SQL Server旬时间粒度       ...

  6. 花了一年时间完成的 在线G代码编辑,加工系统 G-Code Editor V1.0

    G代码是数控程序中的加工指令.一般都称为G指令.可以直接用来驱动机床,各种控制系统.是一种数控行业标准.传统的G代码编写以及编辑无法在线编辑,也不能实时看到g代码编辑的最后加工路径已经不能直接对编辑的 ...

  7. 花了一年时间开发出来的EZNest 自动套料软件

    随着国内钢结构制造业的迅猛发展,市场竞争也愈演愈烈.近来钢材价格的大幅攀升,节约用材已成为企制胜的戈键,提高钢材的利用车自然就成了目前许多企业十分关心的一件事.对十大型钢结构生产制造商来说,如留在传统 ...

  8. 【生产问题】记还原一个很小的BAK文件,但却花了很长时间,分析过程

    [生产问题]还原一个很小的BAK文件,但却花了很长时间? 关键词:备份时事务日志太大会发生什么?还原时,事务日志太大会怎么办? 1.前提: [1.1]原库数据已经丢失,只有这个bak了 [1.2]ba ...

  9. 自己花了2天时间,重新整理了个全面的vue2的模板

    自己花了2天时间,重新整理了个全面的vue2的模板,基本vue中需要的部分都整理封装好了,希望大家喜欢^ ^.欢迎大家star或者fork呀~,https://github.com/qianxiaon ...

随机推荐

  1. 与KubernetesAPI服务器交互

    在介绍过的Downward API提供了一种简单的方式,将pod和容器的元数据传递给在它们内部运行的进程.但这种方式其实仅仅可以暴露一个pod自身的元数据,而且只可以暴露部分元数据.某些情况下,应用需 ...

  2. 使用 Docker 秒速搭建多版本 PHP 开发环境

    目录 目标 下载 代理设置 配置环境 PHP 7.2.x,占用本地端口 8081 PHP 5.6.x,占用本地端口 8082 端口映射 local.php72.com -> 127.0.0.1: ...

  3. Linux-NFS存储

    1.什么是NFS NFS是Network File System 的缩写,中文意思是网络文件共享系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录. 2.NFS存储服务 ...

  4. 让你发布的nuget包支持源代码调试

    前情概要 在不久的从前(也还是要以年为单位哈), 我们如果需要调试第三方代码, 或者框架代码很麻烦. 需要配置symbols, 匹配原始代码路径等. 为此, MS推出了 Source Link 功能, ...

  5. Centos下安装最新版本Git

    git是一个分布式版本控制系统 我们在Centos上安装GIT有好几种方式.这里我们用最简单的yum命令方式 一步到位,省了下载编译安装这些繁琐过程. 输入命令: yum install -y git ...

  6. Mysql 中字符串的截取

    一.从左开始截取字符串 用法:left(str, length),即:left(被截取字符串, 截取长度) mysql> SELECT LEFT('hello,world',3); +----- ...

  7. SpringBoot中如何监听两个不同源的RabbitMQ消息队列

    spring-boot如何配置监听两个不同的RabbitMQ 由于前段时间在公司开发过程中碰到了一个问题,需要同时监听两个不同的rabbitMq,但是之前没有同时监听两个RabbitMq的情况,因此在 ...

  8. 3shell命令替换

    Shell 命令替换是指将命令的输出结果赋值给某个变量.比如,将使用ls命令查看到的某个目录中的内容保存到某个变量中,这就需要使用命令替换. Shell 中有两种方式可以完成命令替换,一种是反引号` ...

  9. 重置networker8.0密码

    一.重置Networker 8.0密码 1.设置环境变量 新建一个"系统环境变量"名字为"GST_RESET_PW",值为1 2.重启EMC GST Servi ...

  10. python 获取当前py文件所在的位置 及对应的文件名称

    # 导入sys整个模块 import sys # 使用sys模块名作为前缀来访问模块中的成员 print(sys.argv[0]) 当前文件名:12.py 程序运行结果: ============== ...