Skip to content
dodola edited this page Mar 24, 2015 · 56 revisions

IT/互联网笔试面试知识整理

基础知识

计算机网络

  1. HTTP 协议
  2. TCP 协议
  3. IP 协议
  4. Socket 编程基础

数据结构与算法

数据结构

  1. 链表
  2. 哈希表
算法
  1. 排序
  2. 搜索
  3. 字符串
  4. 向量/矩阵
  5. 随机
两种算法设计思想
  1. 贪心
  2. 动态规划

体系结构与操作系统

  1. 体系结构基础
  2. 操作系统基础
  3. 并发技术
  4. 内存管理
  5. 磁盘与文件
  6. 进程管理

数据库

  1. 事务处理

编译原理

  1. 编译器前端

设计模式

  1. 面向对象基础

iOS/Mac

部分内容翻译自:AustinChou/My-Knowledge-Base iOS/Mac 开发部分

Objective-C

  1. Objective-C 类与对象
  2. Objective-C Block编程
  3. Objective-C 内存管理
  4. Objective-C 消息机制
  5. Objective-C 自省机制

Cocoa

  1. Cocoa 设计模式
  2. Cocoa 网络编程
  3. Cocoa 多线程编程
  4. Cocoa 持久化

CocoaTouch

  1. CocoaTouch 事件处理
  2. CocoaTouch UIApplication 基础
  3. CocoaTouch UIView 基础
  4. CocoaTouch UIViewController 基础

Android(草稿)

  1. Android系统架构
  2. Activity/Service生命周期
  3. Android中的动画(补帧与逐帧)
  4. Handler机制
  5. Android线程之间、Activity之间通信
  6. DVM与ART
  7. assest和raw文件夹与程序打包
  8. 常用的五种布局方式
  9. Android中的广播机制
  10. 设计模式与IoC(Inversion of Control)
  11. Android中长度单位
  12. Activity的4种启动模式
  13. 什么是ANR,如何避免
  14. ListView原理与优化
  15. ContentProvider实现原理
  16. 介绍Binder机制
  17. 匿名共享内存,使用场景
  18. 如何自定义View,如果要实现一个转盘圆形的View,需要重写View中的哪些方法?(onLayout,onMeasure,onDraw)
  19. Android事件分发机制
  20. Socket和LocalSocket
  21. 如何加载大图片
  22. HttpClient和URLConnection的区别,怎么使用https

  23. Parcelable和Serializable区别 

  24. Android里跨进程传递数据的几种方案。(Binder,文件[面试官说这个不算],Socket,匿名共享内存(Anonymous Shared Memory))
  25. 布局文件中,layout_gravity 和 gravity 以及 weight的作用。
  26. ListView里的ViewType机制
  27. TextView怎么改变局部颜色(SpannableString或者HTML)
  28. Activity A 跳转到 Activity B,生命周期的执行过程是啥?(此处有坑 ActivityA的OnPause和ActivityB的onResume谁先执行)
  29. Android中Handler声明非静态对象会发出警告,为什么,非得是静态的?(Memory Leak)
  30. ListView使用过程中是否可以调用addView(不能,话说这题考来干啥。。。)
  31. HandlerThread有什么作用,请描述一下内部机制。
  32. 请用一个线程自己实现消息队列循环。(Thread+Looper+Handler即可)
  33. Application类的作用
  34. View的绘制过程
  35. 广播注册后不解除注册会有什么问题?(内存泄露)
  36. 属性动画(Property Animation)和补间动画(Tween Animation)的区别,为什么在3.0之后引入属性动画(官方解释:调用简单)
  37. 有没有使用过EventBus或者Otto框架,主要用来解决什么问题,内部原理
  38. 设计一个网络请求框架(可以参考Volley框架)
  39. 网络图片加载框架(可以参考BitmapFun)
  40. Android里的LRU算法原理
  41. BrocastReceive里面可不可以执行耗时操作?
  42. Service onBindService 和startService 启动的区别

Android面试中问到Java、算法

算法(很多是《编程之美》里的原题):

  1. 二分搜索
  2. 从100W个数中,找出100个最大数(堆)
  3. 链表模拟加法,比如 1->2->3 , 4->-5>6->7 输出结果:4->6->9->0 (主要考察链表逆置)
  4. 用两个栈实现一个队列。队列的生命如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。
  5. 写一个将字符串转换为数字的方法,不能使用Java现有的方法(如:Integer.parseInt)
  6. 一百个台阶,一步一步走,也可以两步两步走,一共有多少种走法?
  7. 递归实现下 public String replace(String ss, char ch);(没看懂什么意思)
  8. 快排
  9. 双链表

Java

  1. 垃圾回收机制。。。(主要从下面几方面解答 GC原理、最好画图解释一下年轻代(Eden区和Survival区)、年老代、比例分配及为啥要这样分代回收)
  2. 对象分配问题,堆栈里的问题,详细的会问道方法区、堆、程序计数器、本地方法栈、虚拟机栈,问题入口从String a,new String("")开始
  3. 关键字,private protected public static final 组合着问
  4. Object类里面有哪几种方法,作用
  5. equals 和 hashCode方法,重写equals的原则()
  6. 向上转型
  7. Java引用类型(强引用,软引用,弱引用,虚引用)
  8. 线程相关的,主要是volitate,synchorized,wait(),notify(),notifyAll(),join()
  9. Exception和Error
  10. 反射的用途
  11. HashMap实现原理(数组+链表),查找数据的时间复杂度
  12. List有哪些子类,各有什么区别
  13. NIO相关,缓冲区、通道、selector。。。(不熟,面了这么多,挂在这里。其实主要是表现在同步阻塞和异步,传输方式不同。标准IO无法实现非阻塞模式、文件锁、读选择、分散聚集等)
  14. 内存泄露,举个例子
  15. OOM是怎么出现的,有哪几块JVM区域会产生OOM,如何解决(对于该问题,建议去《Java特种兵》的3.6章)
  16. Java里面的观察者模式实现
  17. 单例实现(我一般用enum写,不容易被挑毛病)
  18. 用Java模拟一个栈,并能够做到扩容,并且能有同步锁。(用数组实现)

C/C++

Clone this wiki locally