黑马程序员技术交流社区

标题: 【西安校区】上市公司又如何,在我大西安就得蹲着 [打印本页]

作者: 西安-就业部    时间: 2016-4-22 17:41
标题: 【西安校区】上市公司又如何,在我大西安就得蹲着
本帖最后由 西安-就业部 于 2016-4-25 17:11 编辑

上市公司又如何,在我大西安就得蹲着
                                                                                                                                   (参与面试者:就业部-小灰灰
      前言:这公司我在成都工作的时候去试过,有种店大欺人的感觉,成都那边的HR一副高高在上的嘴脸,那时我刚毕业,用的真学历,技术过关后,她说我刚毕业只给我开了6K的工资,当时心中一万个“草泥马”送个她,我感觉没得谈直接就走了。还是秦人文雅,风度翩翩,这公司在西安地区的HR就很不错,没带简历就说他帮我打印,进门就握手倒水,非常的客气,公司的文化氛围也非常不错.


1. 面试结果

【面试公司】中科创达西安分公司
【公司规模】1000人以上,上市公司
【公司简介】中科创达是全球领先的智能终端平台技术提供商。目标市场包括智能手机、平板电脑、车载终端、移动安全操作系统、智能硬件/物联网以及企业/行业移动信息化
【面试结果】12k+五险一金+14薪

2. 面试过程

1.笔试
     
没有笔试

2.面试

Q:你简历上的4个项目都是自己负责开发的吗?
A:是的,我对自己的技术比较自信,工作几年了,做过的项目不少,但简历山的项目都是我主导负责开发的,上面有两个项目是在成都公司开发的,后面两个项目实在泰捷公司开发的。我做项目有个特点,不是为了写代码而去写代码,项目对我而言,就像自己的孩子一样,我希望它得到用户的认可,每个功能点都能切合市场需求,抓住用户痛点来打动用户,所以除了做项目开发,我一直在研读产品方面的书籍。

Q:最后一个项目是个电子市场,你觉得这个项目成功吗?
A:首先,这个项目我认为是非常成功的,如今应用市场基本被几大公司掌控,如腾云应用宝、360应用市场、豌豆荚等,但都是囊括所有类别,因为他们背后有大公司撑腰,可以不计成本的搞,但我们公司不会这样,在O2O已然泛滥的今天,论广度我们公司的实力无法和BAT、上市公司之类的抗衡,成本太高,但也可以在垂直领域创出一片天。我们的电子市场只关注游戏,立志做到中国最高端的游戏应用市场,我们会联系国内主流开发公司,希望和他们进行APP合作,我们帮他们推广,他们把APP在我们的应用市场上独家首发。

Q:假设一个页面有好多图片,如何保证图片不会显示错乱。
A:图片错乱的原因在于,异步加载的时候,我们创建的view又进行的复用,比如一页listview可以显示10条数据,加入这个时候网好慢,如果没做处理,这个时候又把listview上滑动了,假设滑倒了第15条,那么很有可能出现第15条显示的图片其实是第1条上面的,就会造成图片错乱,解决方案就是给显示图片的ImageView根据当前item的postion信息设置tag即可。当然,目前主流开发的图片加载框架,如Glide、Piacaso等都做了图片错乱的处理,我们直接使用即可,而且图片错乱是Android图片相关问题的一方面,更多的图片过大引起的内存溢出问题,降低OOM的几率才是Android图片问题的一大难点,原理就是实现图片的三级缓存机制,在早期的开发中,都是自写图片加载库,到现在主流开发都会使用Glide、Picasso、Frecso等第三方库,尤其是Glide,可以非常有效的降低OOM几率。我在项目开发中也主要引用Glide,谷歌出品,必属精品嘛。


Q:你对list集合熟悉吗?
A:Android开发说到底还是写java代码,那必然要求对java编程很熟悉。list集合主要有ArrayList、LinkedList、Vector三个,其中ArrayList属于顺序表结构的集合,linkedList属于链式结构的集合,vector也是顺序表结构,不过它是线程安全的,除此之外,还有set集合、map集合等,在项目开发中应用的也比较多,当然还有其他的,比如我之前在开发即时通信的时候,要使用队列,即消息的集合,但普通的队列集合并不是线程安全的,我们有发送和接受两个线程要操作同一个队列的数据,必然要求进队列和出队列的函数要写成同步函数了,但这样很麻烦,最后发现java集合有个LinkedBlockQueue,这个集合就是线程安全的队列。

Q:谈一谈对ArrayList的认识?
A:(大概猜出面试官不会Adnroid了)ArrayList它属于顺序表结构,内部维护了一个Object数组和一个保存它大小长度的变量。默认长度是12,如果不停的ADD操作,一旦超过了当前分配的最大长度,就会重新创建一个数组,新的长度为当前数组长度的3/2,然后进行数组拷贝操作。删除则相反,处理边界后,进行数组移位操作即可。所以ArrayList的添加和删除效率相对LinkedList就比较低了,但查询效率很高。

Q:你对数据结构熟悉吗?
A:这个搞编程的肯定都比较熟悉,数据结构有顺序结构、链式结构、树形结构、图型结构等,其中顺序结构即顺序表,内部用数组维护。链式结构即链表,有单向链表、循环链表、双向链表、跳跃链表等。属树形结构有二叉树、平衡树、A*树、红黑树等,图论里面就包括图的搜索,DFS(深度优先搜索)、BFS(广度优先搜索),还有最短路径,最小生成树等。当然高级的数据结构还有并差集、线段树、字典树等。在java集合中,Treemap集合就是用红黑树写的,一颗自平衡的排序二叉查找树,这样可以保证需要快速检索指定节点,HashMap内部则是一个链表散列。

Q:你们Android开发如何实现线程间通信呢?
A:(这时候,完全确定他不懂Android开发了)Android在4.0之后就规定不能在主线程中进行耗时操作,Activity、Service等耗时不能超过5秒,否则就会报出ANR(Application Not Responding)错误,所以对于耗时的操作,如网络请求、加载本地数据等需要单独搞个线程去执行,当执行完成后又需要更新UI,所以就需要子线程和UI线程进行通信。在Android中提供了Handler帮我们实现消息通信。每个线程都对应一个Looper对象,在looper对象中维护了一个消息队列MessageQueue。应用的UI线程启动后,looper就会初始化一个消息队列,然后开始轮询MessageQueue,我们常常会在主线程创建一个Handler并重写handlerMessage()方法,然后再子线程调用了handler.sendMessage(msg)方法把消息发送出去,其实就是发送到主线程looper的消息队列中,发送之前msg会把发送它的handler设置成它的tag对象保存起来,在消息队列轮询到这个消息msg后,先读取它的tag对象,就知道是哪个handler发送过来的,然后显式的调用handler对象的handlerMessage即可,至此,就实现了线程间的通信。
我现在开发做开发都用的EventBus去做线程间通信,而不会直接使用handler+子线程,容易出现内存泄漏问题,比如在Activity界面开启一个子线程去执行耗时任务,这时候假设按返回键,activity执行finish方法,对象按理应该被回收销毁,但如果子线程还在执行,子线程保存了对外部activity对象的强引用,那么activity就不会被销毁,内存泄漏问题就出现了。


Q:你都了解什么设计模式呢?
A:我做开发几年了,了解的设计模型有很多,单例模式、工厂模式、装饰着模式、观察者模式、享元模式等等,这些模式在Android开发中随时可能用到,而且我读过Android的源码,它的内部功能很多都是基于观察者模式实现,而当前开发最火的Rxjava也是基于观察者模式实现的,是一种响应式的编程,可以实现对任务线程的控制,并提供很多的数据操作方式。

Q:你这项目感觉不咋地,知道的东西倒是挺多的,基础也不错
A:谢谢,主要是年轻嘛,想多去积累一些东西,感觉自己现在我差的很远,需要到咱们这样的大平台来好好锻炼一番,更快的提升自己。

Q:你预期的薪资是多少?
A:  我在深圳一直是16K+15薪水,到西安了期望12以上。
Q:好的,薪资上没有什么问题,小伙子好好干,很有潜力。

       之后就是跟人事吹牛,工资就定了12k,14薪,五险一金自己的那部分也是公司缴纳,爽歪歪啊,上午11点去面试的,快1点才结束,当前下午3点offer就发过来了。







作者: chenbin19930916    时间: 2016-4-22 23:44
感觉好轻松啊
作者: hansuchang    时间: 2016-5-5 17:20
额   面试 那么多理论啊   我感觉我不管做什么都是实践型的  理论我感觉好蛋疼啊
作者: 2011014170    时间: 2016-5-9 16:52
那些项目是培训时候的项目还是真是在一个公司上班时候的项目啊???
作者: 清凉    时间: 2016-6-29 08:26
好厉害,支持一下
作者: 新人—小明同学    时间: 2016-7-5 22:58
有点...过了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2