面试经历

20200325 腾讯实习第一面

(全程15分钟,比较顺利)
1.hashMap源码
漏讲了扩充到一定数量会变红黑树,面试完面试官给补充了
2.innodb 的了解(主索引,支持事务,mvcc,行锁)
3.select * from table where id=10加什么锁
这个没答对,不会,当时还没了结innodb的锁机制
4.http的状态码301,403代表什么意思
5.TCP四次挥手
6.redis缓存的原理

20200326腾讯实习第二面挂了

早上一起床就打来,昨晚刚问完就打来了,结果面项目经历,当时还是满兴奋的,也有点紧张。首先问我简历上的项目大体是怎么样子的,有多少模块这样子,有什么业务,接着问我负责系统哪一块,比较深刻的。我就说了poi处理上传的excel文件,把数据搞到数据库里面。接着面试官问我这一块和其他模块的一个逻辑,这个不是很懂什么意思,我问了两边后回答了。接着又问如果前端上传的文件太大怎么办,会不会出现卡死的状态,我说这个没去测试过,接着还问如果有100M怎么办,卡死了上传不了,我当时一时紧张,还是说了很多遍没测试过。。(现在想起来就应该回答分块上传,用http1.1…)。面试官感觉无奈,接着问,为什么一定要用excel表格上传,在前端搞表格上传不行吗?我回答是甲方要求用excel表格的,我只负责实现功能。接着没完,还问我项目部署在哪里的,有没有打包给甲方?我回答打不打包我不知道实验室的老师,在验收测试的时候是部署在自己实验室服务器的。接着问,excel表的数据搞到表格里面,如果表的数据特别多怎么办,查询很慢,有几百万条数据时怎么办,现在想起来自己回答是真的笨死了,我居然说自己系统数量少没考虑这个问题。。。面试官还一直在问,有没有分表之类的,已经给提示了,我居然回答没考虑过,也没建立索引来优化。最后问自己还负责哪一块,我就说了岗位变更流程的大体业务。。。我一说完,最后面试官就要拜拜了,挂了电话。。事后其实分块上传,分表不是什么难的东西,怎么辣么笨,,呜呜呜呜。。。。。。。。。太诚实了,没做过的不敢吹,面试官还给了提示,问了这么多遍。。(全程16分钟)

20200402腾讯第三面

不知道是上次过了,还是被其他部门捞起来了。。反正今天下午就视频面试了(全程1个小时10分)

上来就一条求一个数组只出现一次的元素
写了很久,暴力解决了,后来面试官java里面可不可以其他数据结构解决,我说set可以,,后来还问hashmap可不可以,我说可以,然后就问我HashMap的数据结构,我balabala说了一堆(三次面试两次问到绝了。。。),最后说不要暴力解

再做一条题,直接写插入排序。。
我写了很久没写出来,一直越界,调试了一下,但是结果还没出来
我就急了,说不行,平时用的比较多的是快排和冒泡排序。。他放了我了,就问快排时间复杂度的平均是多少,最坏的时候是多少

接下来就问技术了,问题的顺序记得不太清楚了。。
1.udp和TCP的区别,UDP要实现可靠传输要做到什么。。
区别答得好好的,TCP的报文结构都说的很清楚了,但是UDP要实现可靠传输真的不知,我猜是不是检验和,都不对。。。
2.http的1.0和1.1有什么区别
我答完之后又来了一个2.0的区别是什么,我说2.0用了二进制帧,速度更加快,还补充了3…0版本的。
3.get请求和post请求,head请求有什么区别
答完后,结束时说我没答到点子上去。。。。。我当时把head请求的返回报文没有实体说成了请求报文没有请求体。。记错,不知面试官有没有留意。。(后来查了一下,get和post的请求真的没答到点子上,应该从是否缓存,是否可被收藏保留,长度,安全4方面答,啊啊啊啊啊啊啊啊)

4.java里面的byte,和char是什么,有什么区别
我说了一个是二进制,一个是字符,装箱后是什么

5.char多少字节,int多少字节
char我说了只有一个字节,答错了,应该是2个字节
(后来查byte boolean一个字节,char short两个字节,int float 4个字节,double long是8个字节)

6.mysql索引,如果以name和age作为索引,分别只以name和age来查询,会不会用到索引
我说辅佐索引遵守最左匹配原则,name可用,age不可用。。

7.mysql的内连接,全链接,左连接分别是什么
内链接没有答出来,现在想起来好像是外键的意思。。

8.进程和线程有什么区别。。
我说了之后,还一直问线程为什么可以提高线程的并发性。。
我重复了刚才的话。。
(以下是后补:操作系统课本上说法的真的不行,垃圾课本)
1.进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位)
2、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。
而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
3、线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。只是共享同时要进行高并发的控制
4、但是多进程程序更健壮,多线程程序
只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响
,因为进程有自己独立的地址空间。

9.说说常用的设计模式。。
我答了单例模式,工厂模式,代理模式。。balabala…

10.git的回退到某一个版本的指令
这个指令之前请教过朱老师,但是没记住,今天没打出来,我答了checkout…

使用git reset --hard 版本号git回退参考

最后一问我的项目负责那一部分,部署到哪里,我说在做,突然就不问了。。然后就到了终极问题,有没有问题要问他。。我问了之后就把我总结了一堆我回答得问题,,插入这么简单得没写出来不应该,很多没达到点子上。。基础不行。。。。。

字节秋招提前批20200715

1.进程线程区别,锁的形成和方案,如何判断形成环状
2.原子性操作是什么,用什么实现的(追问用什么实现没答出来),
网上说的是汇编语言实现的,,因为使用到总线锁和寄存器等操作,可以用原子操作来替换重量级的锁同步,从而提高程序性能。底层实现角度,原子操作可以用于构建各种更重量级的同步操作,比如锁或屏障之类的。
参考
3.动态连接和静态连接区别(这个回答不全面)
静态链接的过程就已经把要链接的内容已经链接到了生成的可执行文件中,就算你在去把静态库删除也不会影响可执行程序的执行;而动态链接这个过程却没有把内容链接进去,而是在执行的过程中,再去找要链接的内容,生成的可执行文件中并没有要链接的内容,所以当你删除动态库时,可执行程序就不能运行。
参考
4.valite是什么,说说
5.虚拟地址怎么来的,
6.计网有几层,IP协议报文结构,ARP协议,
7.TCP连接,挥手过程
8.数据库事务四大特性,
9.jion,groub by
10.哈夫曼编码思路
11…分析程序,看输出

12.栈编程题
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 判断条件如下:
左括号必须与相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
空字符串被认为是有效字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值