七夕前面试被虐总结

面试是朋友推荐过去,事前已经发过简历,一周后通知我去面试,早上9:30准时到,地点在中关村教堂后面。

公司门厅有保安小哥,打电话来领人,进门就在大厅开始。

面试官两人,一年轻(以下"轻官"代替),一年长(以下“长官”代替)。年长的穿了件大外套+北京布鞋,很有个性。

无笔试,直接技术面,开始大部分是“”长官提问,后来“轻官”问了一些。

提问顺序记不太清了,出门时候10:40左右,期间一直没停,能想起来的提问如下:

面试问题 总结
	1.写一个函数,把int转换成byte[];
		1.1 java中数据存储区域有哪些;
		1.2 String str1 = "abc" 
			String str2 = "abc"
			str1 == str2吗
			为什么?;
	2.模拟一个ArrayList ,写一个add(Object obj ) 函数 ;
		2.1 说说时间和复杂度
		2.2 数据变多后如何处理越界
	3.Activity 四种启动模式,分别说说意思和区别	;
		3.1 什么情况下使用四种模式,为什么?
	4.数的理解,二叉树如何平衡;
		4.1 如果插入的数据类似9,8,7,6....1 如何保证左右平衡
	5.Handler,Thread , Looper , Message 关系
		5.1 Handler 是任何地方都可以创建的吗?
		5.2 每个线程是否都有Looper ,
		5.3 能否在一个Handler 中 new Thread ().start();
	6. 假如有一个List ,里面有十个数 0-9 ,
		6.1 如果循环遍历中如果 i%2 == 0 执行remove ,是否可以顺利执行
			for (int i = 0; i < array.size(); i++) {
				if (i%2 == 0) {
					array.remove(i);
				}
			}
		6.2 如果可以顺利执行,执行完毕,list剩余的数位哪几个;
	7.看简历项目
		7.1 说说简历框架如何实现
		7.2 哪一个页面是你写的,页面的布局是如何设计,具体到某个控件使用的是什么view;
		7.3 某个view 如何保持剧中,
			LinearLayout ,RelativeLayout 中view 如何居中,对齐,
		7.4 某个页面类似 android 桌面,排列着N个 按钮,如何动态计算显示按钮
			例如:
				需求:N <= 20  ,每行显示 5个 ;N>=20 每行显示 6 个
				每行显示控制如何实现
				
		7.5 简历项目中涉及到自定义View ,如何实现。
		7.6 自定义view 如何控制刷新,如何优化,遇到哪些问题,如何解决,刷新区域如何指定。
		7.7 View 原理,(需要看view源码) 看源码 理解源码很重要 ;
		7.8 简历中项目的框架搭建设计思想,类似mvc设计,view 显示层/控制层/
		
	8.简历有写,熟悉Android UI框架,请你说说 你理解的UI框架;
	9.简历有写 熟悉常用设计模式 ,请你说说 你常用的设计模式,并且在项目中用得到的有哪些。
		9.1 简历中的项目,用到了你说的设计模式有哪些,哪些地方用到,为什么这么用,这么用有什么好处?
		
		9.2用的单例,观察者,工厂 。
			观察者 模式中,说说谁是观察者,谁是被观察者 ,之间的关系
	10.C,/C++ 掌握程度(0)
	11.TCP ,UDP 区别,项目中哪些地方使用过?
  	11.1 如何保证UDP情况下数据包不丢包/完整性(非心跳连接,例如发送10个包,中间3个发送时候UDP 未连接,如何识别/保证)
		(2014-08-05 10:19 补充)
					

   

  面试官出来时候自带简历,坐下后开始看,我主动自我介绍。

  介绍简单,姓名,籍贯后开始从第一家公司 和第一个项目说起,前公司业务方向,我负责的内容。。

  “长官”从第一个项目开始,我负责自定义View(钢琴键盘),问如何实现,如何判断确认点击按键,如何绘制,优化。主要关心项目中对面向对象的理解,类如何设计提问。

  然后,询问项目中用到哪些算法,如何设计,算法复杂度。

  例如确认某个点击事件是按在哪个按键,需要去遍历全部按键,算法复杂度f(n);

  询问项目中用到哪些设计模式。

  接下来问最近的项目,我做了项目的介绍,然后演示。介于项目框架我是负责,“长官”问了框架如何搭建,优势,有那些优化,布局如何设计等很详细的问题。

  例如:整个框架是Activity + Fragment 某个Fragment 中存在ViewPager  ,ViewPager中包含了多个Fragmeng ,“长官”听了只是笑笑,我没太明白小哪里,是这样不太好,如有看官知道,望指教。

  问项目中随时问Activity相关,Handler Thread 相关。

  看得出“长官”技术很好,还问了一些基础,

  例如让我写一段函数,将int 转换成byte[] ,当时我想的是:

  new Integer(x).getBytes();

  “长官”看了,我感到了被鄙视的眼神。。。说:“我没见过这样写的”;

  我补充了一句,是否是想让我用位移运算,“长官”没说什么。

  回来后查询了下确实没有 new Integer(x).getBytes(); 这个API ,

  2014-08-05 10:07 补充:可以参考:http://my.oschina.net/u/169390/blog/97495

  “轻官”后来问了几个关于数据结构的,

  例如,如何设计一个链表结构,可以简单画一下。

  答:我在纸上简单话了 节点 的结构 ,包含了“data” 和 “index” 内容,可以扩展 指向前后 链表 “data” “left_index” “ right_index” 等

  再问:如果链表中出现了一个 节点,他的“left_index” 指向了一个错误的 节点,如何找出来,

  答:我想到将链表遍历 将“left_index” 存在数组,如果出现重复,能找到,这样是最笨的方式,算法复杂度f(n) ;

  。。。。

  最后两人回去,让我等一会,几分钟后“轻官”回来 委婉的表示 他们需要高级技术人员(2-2 以上),我只能达到(2-1) ;

  表示有些问题例如算法和结构,项目中或许从来不会用到,但拿来面试还是很管用,如果想来,可以准备好再来面试。

  表示感谢后下楼,外面下雨了。。

  这次面试相比之前遇到过的很有难度,在此对面试官表示感谢。

  补充:关于面试问题答案,有时间会补充进来,没有补充的话,自行google吧


  罗嗦一大堆,感觉自己技术还是太菜,项目中用到的会去了解,用不到的,就了解的少或者理解不够。

  1.Java博大精深,简历上写“精通java” ,实际上很多基础理解不够,需要学习的还很多。

  2.Android 只是知道表面,API 都没全部看过,原理更不清楚,需要加深理解。

  3.数据结构和算法,通常用不到,当时需要了解基本的算法实现原理,和基本的机构,(面试前把“大话数据结构” 看了一遍,没吸收全);

  4.设计模式也需要知道,了解不是目的,真正用到项目中才是掌握。

  5.额,学历也是附加项。

  接下来要做的

  1.Java基础 有时间复习下;

  2.Android 需要了解框架,真是了解,看源码,了解设计思想,不单单是调用API

    (这方面源码已经下载,还罩着教程编译成功,可惜编译通过不代表就了解了)  

  3.数据结构和算法,继续看书,课后习题要自己实现,不能看似简单就不动手

    (大话数据结构 代码是c++ ,顺带也要学习c++了)

  4.C++ ,跑不了要学,只做应用层没前图,Framework是下一个目标;

  5.设计模式,需要看一下。

  6.还有英语。。。。

  7.学历。。。。。

虽然总结接下来需要做的事情,希望能坚持一条条做到,很多时候都是三分钟热度,例如减肥/健身。。。。

不进步的话,就没毛爷爷娶媳妇。

                                                                           --------------------2014-08-04 -北京 -鸟窝附近

      

                                                            

  

 

原文地址:https://www.cnblogs.com/wang-xiaohao/p/3890276.html