程序媛找工作真的太太太太太难了!

现在的市场环境确实不大好,失业人群一大把,招人的公司就开始提高要求,各种为难应聘者,对于可有可无的岗位,甚至会压工资。我这几天面试了几家公司,目的有以下几点:

1、跟现在老东家签约的合同快到期了,想出来看看新机会,有好机会就考虑挪挪窝了;

2、现在外面的市场是个什么样子,求职的人和招聘的人比例;

3、市场对于一个高级/资深开发工程师的要求是什么样子(毕竟纸上得来终觉浅,觉知此事须躬行);

4、年龄到底是不是个坎。

面试整体事项

  • 简历要准备好,联系方式一定要正确清晰醒目,项目经历按照时间倒序阐述,注意描述自己在项目中承担的职责,简历的模板尽量选择简洁的,毕竟程序员大部分还是喜欢简单明了的。

  • 推荐boss直聘,我觉得很好用(不是广告)。

  • 一般的整体面试流程都是电面->现场面->HR面->等着。

  • 不要觉得HR说让你回去等消息就是GG了,他们也要跟你之前的面试官讨论,再向领导汇报,如果说不急可能还要和其他候选人比较,所以HR让你回去等消息绝对不是说明你完蛋了。

  • 面试前准备好自我介绍,1分钟左右就可以,可以写在纸上,电面可以照着念,等你到了现场面了基本也都快背下来你的自我介绍了。

  • 准备好扎实的基础,这是一切的根源,没实力怎么都没用的。(我自己就是败在这一点了)

  • 面试中你可以把你的面试官往你会的知识上引导(我遇到过你会什么他不问什么的)。

  • offer都会有的,不要着急,把面试当成一个交流的过程。

下面说说自己面试了几家公司遇到的一些面试题目吧,感觉无论自己怎么准备,好像永远达不到面试官满意的程度,或者说自己总有很多不会的,稍微一问深了,就不会了,这也怪自己技术栈深度不够、广度不够,没面过,没经验。

而且各个面试官真是看心情,路数完全不一样,有的只问java特别特别基础的知识,比如面向对象的设计原则、比如char占几个字节,能不能存中文。。。有的问android性能优化,有的只考算法,有的可能来个脑筋急转弯。不过这也激励自己要努力,不能再每天无所事事的,做完公司那点活了,不去主动更新自己,也知道自己到底有几斤几两了,当别人问自己的职业规划时,自己也思索着,以后到底想发展成什么样。

面试题目

一个创业公司

(发现问下来几乎全是java基础知识,几乎没有android知识)

先是笔试:

  1. 生产者消费者模型用线程方式实现、按元素大小拼接两个链表

  2. 同步异步的区别

  3. 阻塞非阻塞的区别

  4. 泛型擦除

  5. 集合中线程安全的类和非线程安全的类(SparseArray和ListArray的区别,SparseArray怎么存数据、取数据)

  6. Gradle插件怎么做

  7. https怎么实现防抓包

  8. 封装第三方库等等;

一个五六百人的民企
  1. 线程池

  2. 消息推送(自己做一个消息推送怎么实现)

  3. Exoplayer相对于系统的MediaPlayer有什么优点

  4. h5面面加载缓存,和原生怎么传递数据

  5. MQTT和XMPP有什么区别,为什么会有那么多协议

  6. https的原理,中间人攻击

  7. 怎么中断一个线程

字节跳动

1.自我介绍

2.jvm虚拟机

3.接口和抽象类区别,如果一个类不需要被继承应该怎么做,final,那在什么情况下我们会使用final修饰类呢…

4.invokeVirtual,invokeInteface,为什么你会觉得抽象类的效率高(我说了查找字节码指令上)如果是单继承和实现一个接口的情况呢,你应该要有自己的理解…

5.HashMap的equals和hashCode()作用,如果不覆写hashcode会怎样

6.Exception和Error的区别是什么,Exception一定要我们自己解决吗

7.泛型了解吗? 那泛型擦除是在编译阶段还是在加载阶段?怎么理解类型擦除的概念

8.泛型里面的extends和super的区别

9.线程,网络请求为什么要新开一个线程

10.ANR有几种情况

11.线程里面可以操作UI吗

12.HandlerThread

13.Handler原理

14.异步发送的都会到同一个消息队列里面吗

15.线程和handler,Looper,MessageQueue的对应关系

16.怎么处理这个延迟消息,我答了messageQueue里面有一个链表的结构,通过时间排序,到了时间就取出,没到时间就阻塞

17.说说动态代理

18.注解

19.你是怎么理解子网掩码的概念的?

创业公司想招团队负责人

做过哪些性能优化,Leakcanery的原理,怎么检测内存泄漏的

android的新技术你用了哪些

你认为你应用中做得比较nb的地方有哪些,你认为你项目中解决了哪些技术难点等等。。。

我认为反常规的面试

1)直接拿着我做的公司某个应用开始一通批判,觉得我自己对自己做的应用都不负责任,还有什么理由来应聘你,问你认为你最善长做的是什么,比如UI、功能、性能优化等,你要说UI吧,你这UI做得怎么怎么的,你要说性能吧,应用性能也确实一般般,让我觉得我没有啥善长的。回来我朋友说我们公司害了我,因为我现在的公司做的应用要求太低了,能用就行。但是别人对我要求松,我得对自己严要求、高标准〜〜〜〜

2)上来弄个类似于脑筋急转弯的题

Set<Short> stack = new HashSet<>();
for(Short i = 0; i < 100; i++) {
    stack.add(i);
    stack.remove(i-1);
}
System.out.println(stack.size());());

我以为会抛异常,面试官问要是不抛,又会输出什么,我想着输出1呢。后来自己下来试验了一把,发现输出100,让我百思不得其解。后来百度搜索,经别人提点才知道因为i-1这里用到了隐式类型转换i-1会转成int型的减法,所以在remove时,根本没有那个对象,所以无论怎么调stack.remove(i-1)都不会有元素移出,我不得不感叹面试官设计的陷阱。

面试感言

通过这轮面试,让我知道了自己的差距,自己的研究的东西太浅薄了,而且没有自己的优势或者说专长。

现在的面试理论知识、底层原理问得很多,你不仅得知道怎么做,还得知道为什么这么做,自己没有任何准备就去面试了,可能这也是一个原因吧,被虐的很惨。

总的来说,自己劣势挺明显的,没有在某方面有很深研究,没有什么优势,知识面的广度和深度都不够,这方面要加强,同时作为一个有娃的女程序员,已经被别人否掉了50%了,所以必须从技术方面加强吧。

这几天在网上找面试资料的时候,发现一份Android面试指南还总结的不错,秉着好东西就要分享的原则,下面分享给大家:

一、图片

1、图片库对比
2、LRUCache原理
3、图片加载原理
4、自己去实现图片库,怎么做?
5、Glide源码解析
6、Glide使用什么缓存?
7、Glide内存缓存如何控制大小?

二、网络和安全机制

1.网络框架对比和源码分析
2.自己去设计网络请求框架,怎么做?
3.网络请求缓存处理,okhttp如何处理网络缓存的
4.从网络加载一个10M的图片,说下注意事项
5.TCP的3次握手和四次挥手
6.TCP与UDP的区别
7.TCP与UDP的应用
8.HTTP协议
9.HTTP1.0与2.0的区别
10.HTTP报文结构

三、数据库

1.Sqlite升级,增加字段的语句
2.数据库框架对比和源码分析
3.数据库的优化
4.数据库数据迁移问题

四、插件化、模块化、组件化、热修复、增量更新、Gradle

1.对热修复和插件化的理解
2.插件化原理分析
3.模块化实现(好处,原因)
4.热修复、插件化
5.项目组件化的理解
6.描述清点击 Android Studio 的 build 按钮后发生了什么

五、架构设计和设计模式

1.谈谈你对Android设计模式的理解
2.MVC MVP MVVM原理和区别
3.你所知道的设计模式有哪些?
4.项目中常用的设计模式
5.手写生产者/消费者模式
6.写出观察者模式的代码
7.适配器模式,装饰者模式,外观模式的异同?
8.用到的一些开源框架,介绍一个看过源码的,内部实现过程。
9.谈谈对RxJava的理解
10.Rxjava发送事件步骤
11.RxJava的作用,与平时使用的异步操作来比的优缺点
12.说说EventBus作用,实现方式,代替EventBus的方式
13.从0设计一款App整体架构,如何去做?
14.说一款你认为当前比较火的应用并设计(比如:直播APP,P2P金融,小视频等)
15.谈谈对java状态机理解
16.Fragment如果在Adapter中使用应该如何解耦?
17.Binder机制及底层实现

六、性能优化

1.启动 app 黑白屏优化
2.稳定——内存优化
3.流畅——卡顿优化
4.节省——耗电优化
5.安装包——APK 瘦身
6.冷启动与热启动
7.内存泄漏的场景和解决办法
8. Bitmap 优化
9.LRU 的原理
10.webview 优化
11.如何避免 OOM?

七、Android Framework

1.Android 系统架构
2.View 的事件分发机制?滑动冲突怎么解决?
3.View 的绘制流程?
4.跨进程通信
5.Android 系统启动流程是什么?
6.启动一个程序,可以主界面点击图标进入,也可 以从一个程序中 跳转过去,二者有什么区别?
7.AMS家族重要术语解释
8.用到的一些开源框架,介绍一个看过源码的,内部实现过程。

八、Android优秀三方库源码

1.网络底层框架:OkHttp 实现原理
2.网络封装框架:Retrofifit 实现原理
3.响应式编程框架:RxJava 实现原理
4.图片加载框架:Glide 实现原理
5.事件总线框架:EventBus 实现原理
6.内存泄漏检测框架:LeakCanary 实现原理
7.依赖注入框架:ButterKnife 实现原理
8.依赖全局管理框架:Dagger2 实现原理
9.数据库框架:GreenDao 实现原理

九、Java部分

1.StringBuilder
2.泛型擦除
3.Exception 和 Error
4.IO 、 NIO、 OKIO
5.ArrayList、LinkedList
6.HashMap 、HashTable、HashSet
7.Synchronized 原理
8.JVM 内存结构
9.GC

十、Kotlin 相关

1.从原理分析Kotlin的延迟初始化: lateinit var和by lazy
2.使用Kotlin Reified 让泛型更简单安全
3.Kotlin里的Extension Functions实现原理分析
4.Kotlin系列之顶层函数和属性
5.Kotlin 兼容 Java 遇到的最大的 “坑”
6.Kotlin 的协程用力瞥一眼
7.Kotlin 协程「挂起」的本质
8.到底什么是「非阻塞式」挂起?协程真的更轻量级吗?
9.资源混淆是如何影响到Kotlin协程的
10.Kotlin Coroutines(协程) 完全解析
11.破解 Kotlin 协程

十一、Flutter相关

1.Flutter 原理与实践
2.揭秘 Flutter Hot Reload(原理篇)
3.Flutter 动态化探索
4.Flutter 如何和 Native 通信-Android 视角
5.深入理解 Flutter Platform Channel
6.Flutter Engine 编译指北
7.深入理解 Flutter 多线程
8.Flutter 状态管理 - 初探与总结
9.Flutter | 状态管理指南篇——Provider
10.深入理解Flutter应用启动
11.Flutter渲染机制—UI线程

由于篇幅原因,以上完整版资料PDF如有需要,可以 点赞+评论 支持下我,然后【点击这里】免费阅读下载。

工作我还会继续找,人都是追求上进的,有好机会还是会考虑挪窝的。我不想在我30岁就干一份可以养老的工作,技术我也会努力去提升,愿我和大家都会有一个更好的未来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值