2019年4月腾讯Java一面总结

	194月下旬,有天在技术群里聊天,看到有个发腾讯内推的,PCG微视部门,Java岗+本科2年经验起,
楼主17年毕业,看着挺合适的,还是想试试看,毕竟腾讯的Java岗也不多,我又有一颗想去互联网大厂的心。
于是乎就给了简历。

	大概3天后的晚上,收到面试电话,当时正在部门聚餐,然后找了个接口出去接电话了。

面试完大概就还记得这些问题,总的来说基础多一些,感觉答了80分,但是最终还是挂了,记录一下失败的经历,再好好复习下基础,有些东西毕业后不用就慢慢忘了。

  1. 自我介绍
  2. 遇见的技术挑战的点?
 	这个问题我回答的特别不好,因为面试前也没在脑中复盘下最近的经历,其实平时还是会遇到一些技术
难点,以及痛苦的解决过程,当时脑袋抽,没描述好。
  1. spark原理了解吗?
	直接实话实说,还没学习到这一步。
  (目前做数据平台开发,主要用sqoop/Hive/spark,但只局限使用,spark底层还在学习中)    
  1. 说下项目中的分布式事务,如何解决的。
	说了下之前项目的分布式事务以及解决方案。
  1. 了解业内其他分布式事务框架吗?
	TCC、LCN
  1. 说下3pc是什么,和2pc相比有什么不一样。
    之前总结过:三阶段提交协议(3PC)
  2. 问点Java基础,我说好
  3. 多线程了解吗,说一下相关的类?
太多了,Thread、Runnable、ThreadPool、CyclicBarrier、CountDownLatch、Semaphore、
ThreadLocal、JUC并发包下面的类。
  1. Executors工具类有哪几种构造线程池的方法?
	我说有4种,就记得其中2种,说了说。然后问我分别每个参数是多少。
	因为平时用FixedThreadPool固定大小的多些。
  1. ThreadPoolExecutor几个参数
核心线程数、最大线程数、线程空闲存活时间、时间单位、队列、创建线程的工厂、拒绝策略。
  1. 说下osi7层模型,tcp/ip分别哪层,每层的数据格式是怎样的。
还好在学校学的东西没全还给老师,还记得一些网络基础。
下面表格是我记得的,不全面,详细的可以百度下。
从下到上分层主要协议数据格式
顶层应用层HTTP、FTP、SSH一个文件、应用
表示
会话层
运输层TCP、UDP数据段
网络层IP
数据链路层数据帧
底层物理层IEEE802.3bit
  1. tcp和udp区别。tcp的拥塞控制。tcp怎么保证可靠性。
	TCP是面向连接的、可靠的协议。比UDP慢,因为要三次握手来建立连接,且需要保证可靠;
	TCP可靠性我没回答上来,其实下来去了解了下,发现就是通过报文中的seq序列号、数据和、ack确认、
滑动窗口等去做数据校验,失败会重传等。
	
	TCP协议是网络的基础,确认需要全面的学习一下。
  1. nio了解吗
非阻塞、基于通道和缓冲区、引入Selectors选择器,选择器可以监听多个通道事件。
  1. 分布式一致性协议了解吗?
	我说zab协议,因为之前对zookeeper比较有兴趣,买了本书《从Paxos到zookeeper》,看了2遍。
但好像每次看完都有新的收获。本来这个地方可以讲很久的,比如消息广播、崩溃恢复2种模式;
如何保证数据一致性,leader的选举等等;
	刚说了一点,被面试关打断了,这个问题就过去了。。。
  1. paxos算法了解吗?
《从Paxos到zookeeper》一书有介绍,paxos是通用的分布式理论,它很牛,有多牛呢?
paxos的作者获得了13年的图灵奖。
  1. 出了个算法题,有序整数数组,给定一个数,从数组中找出2个数相加等于它。要求O(n)时间复杂度。
比较简单,晚点贴代码。
  1. 讲讲hashmap,提到了红黑树,又问红黑树是什么。
	Java集合,HashMap、ConcurrentHashMap必问了,HashMap在JDK8中有些优化,当某个桶链表长度>=8
且桶的数目>=64时,则把该链表转换成红黑树,提高查询效率。
	红黑树是平衡二叉排序树,查询效率稳定O(lgn)就知道这么多,问我旋转那些,我确实不会。
  1. b树了解吗,说说定义。和红黑树有什么联系,哪个效率高?
B树是多叉平衡排序树,这个地方记得当时和面试官重复说了几次,好像始终没说到面试官想听得点。
  1. redis用过吗?平时用哪些数据结构,zset用过吗?
结合项目说
  1. Java中的锁?
我说synchronized和lock,问有啥区别,我说前者是基于对象监视器,后者是应用层面,基于aqs和cas。
然后又问我应用场景。
  1. 轻量级一点的锁了解吗?
我说乐观锁算吗,就讲了讲乐观锁和项目应用。后来问自旋锁作用,然后又问我Java中的cas。
Unsafe类中有些Native方法,比如compareAndSwapLong,能保证原子性更新变量的值,
这是高性能、无锁的数据结构。
  1. volatile关键字(这里很尴尬,电话有点听不清,我反问了面试官几次,汗!)。
然后就提到内存可见性,balabla说了下。
  1. Java内存模型了解吗?
我说是Java内存模型还是jvm内存模型,面试官说Java的。就讲了讲主内存和工作内存。
  1. happen before原则,就记得2条,其实好几条。

总结:

  • 问题偏基础,涉及面比较广,确实有些问题刚毕业可能还记得清楚,毕业后一直不用都忘了,
    虽然最后面试没过,但还是感谢面试官,大晚上面了我一个小时,很辛苦。
  • 认识到自己的不足,网络这块的基础还是不够牢固,接下来还是要多看书。
  • 学习真的是不能停,框架和技术会用只是其中的入门,还是要研究其原理。

未来加油。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值