腾讯元宝客户端一面

前面就是基本上是八股盛宴,然后看你说什么词触发他被动然后追着问。复盘的时候确实发现底层网络和操作系统问得挺细的,可能客户端偏底层?总体来说面得挺舒服的,面试官也很友善,一个小时很快就过去了。

提问环节:
1. 自我介绍
2. 面试官强调这是客户端面试 说明一下base地,进来要转cpp
3. 了解cpp吗?
不了解,对于两者的理解我认为最大的不同在于内存管理,cpp可以灵活地控制内存,提高程序运行效率。Java通过jvm来进行内存管理,好处是系统自动分配内存和垃圾回收,安全简单,缺点就是不能更颗粒度地操作内存。还有就是cpp的学习曲线比较陡峭,其他的就不太清楚了。
4. Java集合有哪几种?
ArrayList,Linkedlist,HashSet,hashmap,ConcurrentHashMap
5. ArrayList和LinkedList有什么区别?
底层实现,读写应用场景,
6. 具体到每一个节点上,他们两在内存占用上哪个更优?
ArrayList底层是连续内存的动态数组,利用了计算机的局部最优特性,所以更优一些
7. 什么是反射?
通过类名在程序运行时构建类实例,操作类方法,类字段,增强编码的灵活性和解耦,但是也存在着安全的隐患
8. JVM是如何反射构建类对象的?
通过方法区中存放的类信息,字段和方法,去构建类对象实例
9. 讲一下类加载机制,描述一下类是如何被加载的?
加载-验证-准备-解析-初始化-使用,然后具体内容
10. 类加载的时候,它对静态成员变量和非静态成员变量的处理具体有什么不同?
静态放在方法区,局部变量放在堆,基本数据类型放在栈帧
11. 讲一下CAS是什么?
12. 有没有遇到ABA问题?
13. Mysql底层存储的数据结构是什么?
14. 平时写sql查询语句时需要注意什么,对查询进行优化,结合一个例子说明?
15. 你的主表的主键ID是增长是+1吗?还是怎么样?
16. 推荐使用顺序递增索引,说了一下顺序递增和UID的优缺点
17. 有遇到并发插入,出现ID空洞的情况吗?
没有,加行锁了
18. 你刚刚说了行锁是吧,那Mysql具体有哪些锁?
行锁、表锁、全局锁,间隙锁防止幻读
19. 什么是幻读?
20. 我看你有提到计算机网络,介绍一下UDP和TCP差异
21. 如果在客户端建立TCP的话,一般会怎么做?
(愣了一下)一般是操作系统底层通过协议栈来进行网络连接,通过JavaAPI来操作Socket层来进行网络连接通信
22. 你有用过java的Socket相关的这些,手动去建立连接的API吗?
用过简单的http网络请求连接,还有使用Java的网络应用框架Netty来进行网络通信,可以自定义消息序列方式和序列头等信息
23. 你刚才提到操作系统负责网络连接,你知道操作系统提供的TCP的API是什么吗?
不太清楚,没有在操作系统层面上实现过这种网络通信的调用
24. 解释一下TCP和HTTP这两个专有名词?
25. HTTP一定要建立在TCP上吗?还是说UDP也可以?
26. 你刚刚说了QUIC协议,关于QUIC你知道哪些呢?
27. 既然你提到了中间密钥,那它建立连接的大概过程是什么?
28. TCP协议的握手是干什么的,为什么要有握手的过程?
29. 它如何保证不接收过去的数据呢?
30. 说了一个乱七八糟的问题,什么什么API和你刚刚说的握手有什么关系?(没听懂)
31. 那我换一个问法,你知道半连接队列吧?那它在握手的哪一步把链接从半连接移到全连接队列?
32. 如果第三次握手的ACK,客户端没收到,会怎么样?
33. OK网络相关的就,嗯(话锋一转),HTTP头的大概结构你清不清楚?
34. 问你两个操作系统相关的问题,kill命令有用过吗?(玛德没听清,没回答出来)
结束一个进程一般用shutdown或者close函数
35. 嗯我不是说在你程序内,那你有个jar包跑起来了,你怎么把它删掉?
一般在服务器上用docker部署多个容器,用docker stop来停掉程序
36. 那你知道在Linux平台,进程退出的时候会有几种信号,你知道几种它们有什么不同?
不清楚具体哪个信号,说了个shutdown和shutdownNow
PS:GPT说有6种,对应不同触发的方式:SIGHUP是终端关闭挂起,SIGNT是Ctrl键+c优雅退出,SIGQUIT是Ctrl键+\用于调试,SIGKILL是强制终止进程,SIGTERM是kill <PID>用来杀死进程优雅终止,SIGTOP是暂停进程可恢复
37. OK,那你对Window系统相关的知识了解吗?
不太清楚,只用过一些简单命令行

做题:翻转数字?(“123456”输出“654321”)

聊天环节:
1. 因为我们这边是客户端开发,你这个经验都是服务端的,有做过安卓或者是其他平台的开发吗?
做过一个功能比较全的C#全栈作业
2. 那你愿意找客户端吗?
(灵魂拷问)(流汗黄豆)可以考虑
反问:
3. 腾讯对于转语言或者转岗位的同学会有过渡的培训吗?
会有,但也看部门,主要是看你有没有意愿去做这个方向的工作
4. 元宝客户端具体是做PC端还是移动端?
都有,具体看你兴趣就行(😥)
5. 那具体的业务是干什么的?
业务就是元宝客户端,你在各个平台都能搜到的吧,这就是我们的业务(😥这不没说吗?)
6. 那客户端主要的工作是集中在哪些方面?用户使用界面?类似前端JS的逻辑处理?
都会做,不光是UI展示,还有用户交互层面,也有数据要处理。虽说是客户端,但是整个数据的上下链路都是要做的
7. 腾讯对实习生会不会苛刻一些?
主要看不同部门的要求,我们这边还好,更注重你的基础是否扎实,解决问题的能力。
#腾讯##面试##客户端##腾讯元宝##26届实习#
全部评论
都怪你这么晚发面经,害我拿不到元宝offer,你送我一个金元宝就原谅你,地址私你了
1 回复 分享
发布于 05-12 18:47 北京

相关推荐

05-12 22:45
已编辑
2222 安卓
55min问了40多个问题,底裤都被扒完了...问题:1,为什么使用flutter2,flutter的优点是什么3,mvvm架构的特点4,flutter和原生混合开发时,页面路由如何管理5,hashmap数据结构如何实现6,红黑树特点,插入和查找的时间复杂度7,hashmap为什么在链表长度为8时转化为红黑树8,内存泄漏的根本原因是什么?9,内存泄漏检测工具的原理了解吗?内存泄漏是如何被检测出来的?10,引用类型有哪些?11,Java中加锁有几种方式?12,审查代码时,如何发现潜在的死锁问题?13,死锁如何产生14,如何避免死锁15,tcp,udp是哪一层的协议,他们的区别是什么?16,tcp如何保证可靠性17,请求头中有哪些信息18,cookie的概念19,序列化和反序列化20,json和protobuf的区别21,数据加密有了解过吗?22,https相比较与http增加了哪些内容?23,https中的证书的概念24,效率比较高的排序算法,哪种算法时间最稳定?25,在实际项目中更轻倾向于自己实现排序算法,还是使用系统提供的方法26,java或c++中排序算法的源码有了解过吗,动态调节排序算法的策略?27,字符串查找算法,kmp时间复杂度,kmp思想是什么?28,计算机两数相乘溢出,如何解决?29,两个链表相交,如何求焦点30,安卓跨进程通信31,传统的操作系统,除了共享内存外,还有哪些跨进程通信的方法,使用场景相比于共享内存有哪些不同?32,view的绘制流程33,安卓绘制中的硬件加速的概念34,flutter是如何实现跨平台的35,flutter如何进行渲染,落实到平台上36,安卓消息机制37,flutter跟原生之间的消息通信38,服务器主动推送消息到客户端有了解吗?39,安卓本地存储,sqlite和sp的特点40,sp可以跨进程吗?如何操作?41,sp存储信息的两种方式,有什么区别?42,高德sdk,手机在室内时无法做卫星定位,如何发挥作用,误差是多少?43,网络请求框架现在普遍使用的是什么?dio是一种什么样的网络请求框架?
点赞 评论 收藏
分享
评论
7
14
分享

创作者周榜

更多
牛客网
牛客企业服务