🐧企业微信移动客户端一面凉经

经历了笔试加面试2小时极限拷打,人已麻

首先是45分钟手撕:
1、合并两个有序链表L1和L2,但稍微做了点变体,把L2合并到L1上,而且是在L1类内部函数做的,写起来稍微有点麻烦;
2、寻找循环递增数组中的最小值,要求用时间复杂度尽可能小的方法;楼主刚开始用O(n)的简单写法,后来面试官提醒才想起来二分查找,并且被追问如果数组是严格递增的应该如何修改代码?
3、手撕智能指针shard_ptr,背模板背的挺熟,但写起来稍微有点变体就会出毛病,只能说掌握的还是不够深刻
#牛客AI配图神器#
面试:
1、首先是让你讲解前面写的三道题的思路
2、C++内存管理中堆栈的区别;
3、malloc free 与 new delete的区别;
4、在模板类的析构函数中,应该用delete还是free?
5、左值引用和右值引用的区别;
6、Android 的生命周期
7、Android JNI开发中 java层的string数据如何传到C++层?涉及到的相关函数;
8、Java层 string类型的编码?C++层的编码?C++层接收到的数据需要拷贝吗?

项目:
1、项目架构
2、自研RPC架构是如何实现的
3、客户端发送的数据,服务器如何知道这个数据是什么类型的?
4、由于楼主项目是基于微服务架构的分模块系统,涉及异步多线程通信,还提问了在多个模块向缓冲队列放数据时需不需要加锁?应该怎么加锁?这一块儿我没怎么弄明白,得需要再好好研究一下;
5、后台C++线程和java层主线程是如何通信的?这一块儿我也同样没弄明白,也是被狠狠拷打了

总结下来,🐧并不太注重对八股的考察,移动客户端开发的难点(以Android JNI为例)应该主要在于java层和C++层如何通信、多线程间的通信机制,以及端云服务间如何通信
全部评论
你是项目中有提到JNI吗,怎么会涉及到JNI这块
1 回复 分享
发布于 03-19 22:46 上海
这是第几面?我面到第三面就挂了。可以交流一下吗?
点赞 回复 分享
发布于 03-19 13:46 浙江
太强了,大佬
点赞 回复 分享
发布于 03-19 13:45 浙江

相关推荐

985柜员:开发还敢还叫,全部让自测就老实了
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务