一面:
先自我介绍
面试官看简历问道:你这个超级手电筒项目上写用到了多线程,如何用到的?
答:新建一个线程,通过Hander来传递消息,使UI线程改变视图,用到了多线程
问:为什么要通过Hander改变UI线程的视图?
答:因为UI线程不允许子线程改变其视图
问:为什么不允许?为什么要这么设计?
答:我觉得是(较长,略)
问:这个2048游戏项目怎么做的?讲一下如何实现的?核心算法介绍下
答:(略)
问:了解设计模式吗?有哪些设计模式?
答:23种设计模式,常见的有单例模式,抽象工厂,工厂方法,建造模式,原型模式,迭代器模式等。。。
问:写一个单例模式
问:这个单例如何实现多线程访问?
答:加synchronized
问:为什么要这么写?何种情况用单例?
问:有哪些数据结构?
问:这些数据结构一般在何种情况下使用?有何优劣?
问:知道数据结构中的对齐吗?
答:(懵逼,卧槽,问的个啥)不造呀,完全没听说过,可以说下吗?
面试官:哈哈哈哈哈,这个不可以有。
Ps:后来查了下,对齐应该是多个基础数据类型在内存中的分配方式,提高查找的效率
问:知道哪些算法?有哪些排序方法?(没问我具体怎么实现)
问:操作系统方面,进程与线程的区别?
问:进程间如何通信?(管道,共享内存,信号量,消息队列,套接字 等)
问:计算机网络方面,TCP UDP的区别?
答:还没学呢,这学期才开始学
问:程序内存何如分配的?如何释放?堆栈的区别?
问:堆多大?栈多大?
问:一个对象可以new在栈上吗?怎么做?
答:(懵逼了,瞎说开始)动态分配的内存在堆上是已经设计好了的,你要是技术牛逼到很高的境界,应该是可以new在栈上的,但它这么设计肯定是有他的道理的,栈只能后进先出,不适合动态分配。
问:死锁是什么?
问:写一个死锁程序?(懵逼)
问:说下思路
问:写下倒转一个字符串的程序,考虑时间空间复杂度
腾讯一面
最新推荐文章于 2023-10-14 15:16:11 发布