每日推荐
ffmpeg必知道的知识点
http://blog.csdn.net/king1425/article/details/70348374
windows下编译最新版ffmpeg3.3-android,并通过CMake方式移植到Android studio2.3中
http://blog.csdn.net/king1425/article/details/70338674
ffmpeg源码简析(一)结构总览
http://blog.csdn.net/king1425/article/details/70597642
此外作者还写了10多篇ffmpeg的源码分析的文章,相信足够大家学习了。
本文作者
本文由bboylin投稿。
bboylin的博客地址:
https://github.com/bboylin/MyNotebook
文章为作者的面试经验,除此以外,作者撰写和收集了7个大类的知识点,可以点击作者博客学习。
(1)前言
本人是国内某985大三本科生,说来惭愧,大一刚学完C语言还是勉强会用函数的水平,准确来说我的编程生涯开始于大一下学期,这两年间我算是进步速度比较快,中间也比常人花了更多时间在编程和看书上。
大三寒假有幸在搜狐公司实习,三月开始准备实习生春招(实际上这时候有点晚了,以至于我阿里一面面的很不好)。
最近一个月也面了腾讯百度头条美团等公司,而今天接到腾讯HR确认offer的电话,激动之余不由得感叹,实习生春招终于是结束了。
本文仅列举最近面试的公司的面经,一个月之前还面试过携程阿里腾讯头条等公司,也拿到了携程的offer,面经都在我的春招笔记本(https://github.com/bboylin/MyNotebook)中,里面也有一些平时的总结和笔记,主要针对Android和Java,希望对正在找工作或者实习的同学有帮助。
废话不多说,下面是面经。
(2)美团
美团一面面了74分钟,比较重基础,算法,操作系统,网络,Android,Java挨个问了个遍。
个人感觉还行,不过美团面试流程太慢,至今未等到二面。
算法: 常用排序算法,复杂度,比较器用的哪种?快排怎么写?完全二叉树高度为n结点最多有多少,汉诺塔问题怎么解决,链表和数组比较?
操作系统: 进程冲突,生产者消费者问题,设逻辑分页和物理分页好处是什么,什么是脏内存。
网络:http1.1相比以前版本有什么改变,七层/五层模型,tcpip分别对应哪层。https的对称加密。
java: public等四个权限关键字的区别,synchronized的用法区别,可否嵌套。 hashmap底层实现,扩容策略,初始化。 arraylist和linkedlist的实现和区别。 classloader的作用,双亲委托。 gc算法(优缺点),为什么叫新生代老年代(晋升机制),强软弱虚四种引用的区别。
android: activity退出怎么保存数据。 怎么把数据写入文件。 picasso的缓存策略,lrucache底层实现,linkedhashmap底层实现,缓存文件怎么命名。 RxJava优缺点,实习项目相关。 自定义view有几个构造方法,第三个参数作用。 listview的convert view作用,用viewholder为什么可以优化他。
(3)百度
百度一面问了很多性能优化的问题,还有app被杀死怎么启动,耗电太多怎么破,怎么统计crash,怎么减少用户流量消耗,事件分发机制,ontouchlistener返回false才会调用onclicklistener,消息机制,view的绘制原理,方法数超过65535怎么办,binder,anr,listview优化,bitmap怎么避免oom。 Java静态内部类和内部类的区别,垃圾回收机制,元空间有哪些东西,hashmap和hashtable区别,list和set区别。
(4)今日头条
头条暑期一面: 二维数组二分查找的最优算法,数组元素从左到右从上到下递增。 retrofit原理,recyclerview和listview异同,各自缓存原理,handler原理,activity生命周期,四种启动模式区别,singletask启动standard的activity在哪个栈,android多进程和多线程的实现,进程和线程区别。
java泛型类型擦除发生在什么时候,通配符有什么需要注意的。
hashmap删除键值对的过程,扩容算法,hashcode和equals有什么关系。java保证线程安全有哪些方法,volatile和synchronized各有何作用。 浏览器打开一个网页的过程发生了什么。 擅长android哪些方面?
(5)腾讯
内推一面: final作用。 下拉刷新加载更多的原理。 RxJava优点,map,flatmap的原理。 可不可以多次subscribeOn,ObserveOn,会有什么后果。 lambda表达式?和匿名内部类的不同。 http协议和https,ssl和tls握手。
内推一面: 自我介绍,项目经历。 java finalize关键字的用法。 try 里面return了finally还会执行吗?执行顺序是? wait和sleep的区别,应用场景。 gc发生在什么时候。 死锁发生的条件。 tcp三次握手的过程?如果确认信号没传到服务器会发生什么?为什么不是两次握手? 一个无序数组怎么找出两个和为特定值的数?快排后首尾两游标。 12个鸡蛋有一个质量不同,如何只称三次测出。 开发过程中有没有实际遇到内存泄露情况,怎么解决的。 activity四种启动模式区别和应用场景。 service生命周期,两种启动方式的区别。 实现ipc的方法有哪些? handler的内在原理。消息队列为空会怎样? 换主题功能怎么实现 如果有机会来腾讯实习,你比较感兴趣的技术有哪些?
网申一面:当时面完没记录,主要是针对简历提问,大致问了,动画,handler的原理,GC,双亲委托模型,容器类源码,四大组件,红黑树,activity四种启动模式及其用途,Java实现线程安全有哪些方式,TCP三次握手四次挥手,线程进程区别,Android多进程相关,socket相关,怎么设计一个检测内存泄漏的第三方框架,为什么用Picasso不用更好的库,RxJava相关。手写一个线程安全的单例模式。
网申二面:技术总监面,学到了很多。基础真的很重要。基础不好就会更早迎来瓶颈。大致问了项目,NP问题,断点调试功能怎么设计,也聊到一点在实验室做过的APK逆向工程,写编译器,APP启动过程以及其中的堆栈分配,以及技术成长道路什么的。这是印象最深的一次我感觉面完非常畅快并且受益匪浅,正了我在技术方面的误区,非常感谢面试官。
HR面:HR面就轻松一点了,问面了哪些公司,为什么没过。家庭情况,爱好,项目经历和自己负责的部分,成绩,对部门了解多少,看过哪些专业书籍,想去哪里发展,经常回家吗,和聊天差不多。面完第二天显示已完成所有面试。
总结就是简历很重要,一份好的简历可以大大提升拿offer的概率,简历上实习经历和项目经历是亮点。
面试之前准备工作也很重要(尤其简历上的东西要非常熟悉,面经也可以刷一刷)。
基础知识也很重要,切不可只会写Android APP而忽视了算法,网络等基础。个人认为,对校招来说,想进大公司光能够写出漂亮的APP是不够的。正如二面面试官所说那样,非科班的也能做。
基础和深度是很重要的,比如Android可以多看看源码或者原理,而Java,算法,网络,操作系统,编译原理这些都应该熟练掌握。下面推荐一些我大一到大三看过的技术书籍。
推荐书籍
c++ primer plus
efficient c++
CSAPP
thinking in java
深入理解Java虚拟机
Android开发艺术探索
Android开发进阶:从小工到专家(何红辉著)
第一行代码第二版(郭霖著)
effective Java
操作系统概念
算法导论
数据结构与算法分析(Java语言描述)
Java8函数式编程
剑指offer
汇编语言(王爽著)
计算机网络(谢希仁著,据说是考研书)
数据库系统概念
设计模式之禅(好在通俗,想了解更深还是《Android源码设计模式》更好)
一些没看过但是据说不错的:
TCP/IP详解(有三卷)
TCP/IP协议族
STL源码剖析
鸟哥的Linux私房菜
the c programming language
Android设计模式源码剖析
计算机程序的构造与解释
联系客服