2021.3.19 一面(通过)
0. 介绍我研究生方向,选什么课?
---->针对性,为以后当程序员做准备。课程:计算机基础四大课程, 分布式系统, 软件架构
1. Java中hashmap底层实现原理?
---->array + 拉链表(长度大于8转红黑树)
追问:如何put一个key-value呢?
--->位置上没别的key-value:直接放在array的那个位置上;有别的, 长度小于8: 插入到链表; 长度大于8:插入进红黑树。
2. JVM了解吗?
---> 了解得不多,只知道这是java实现跨平台(跨操作系统)的原理。
3. 数组和链表有什么区别?
---> 数组有索引,链表无索引;数组物理地址连续,链表物理地址不一定连续;因为有索引,数组查询比链表快;链表插入删除节点比数组开销小;
4. 说下MySQL索引?
---> 详细介绍聚簇,非聚簇;B+索引hash索引;主键,非主键;单值索引,联合索引;索引的适用场景和不适用场景。
5. 四种隔离级别?
未提交读(Read Uncommited):啥都不做
(一级封锁协议 ----> 解决丢失修改)
提交读(Read Commited):二级封锁协议 ----> 解决脏读
可重复读(Repeatable Read): 三级封锁协议 ----> 解决不可重复读
可串行化(Serializable):两段锁协议强制事务串行执行 ----> 解决幻读问题
(其中提交读和可重复读也可以由MVCC实现)
6. 五层网络协议?
---->物理层,链路层,网络层,传输层, 应用层
7. TCP包的结构(TCPs首部)?
---->源端口,目的端口,序号(保证有序,快重传),确认号,窗口(顺便讲了 发送窗口 = min(拥塞窗口,接收窗口)),校验和,(SYN, FIN)这些。
8. 介绍一下TCP?
---->可靠,有连接,不一定实时,三次握手,四次挥手,超时重传,快重传,以及与UDP的区别
9. 了解设计模式吗?
---->不了解但准备学
10. 了解面向对象编程吗,了解定义属性五大原则吗?
---> 不了解
11. 做过网络编程吗?
---> 不是这个方向
12. 发过技术文章,或者开源项目贡献代码吗?
---->技术文章github总结过代码场考题,开源项目没贡献过
13. 学习方法?
---->先保证知识广度,利用google,github, stack overflow, 哪里不会学哪个,享受技术提升的过程。再保证基础的扎实程度,通过名校的公开课来系统学习计算机基础知识,让知识更加成体系。再往深度挖深,比如光学会某个算法不够,要思考有哪些方向可以优化。
--------------根据我的意愿分到上海/杭州部门的面试了,业务是:淘系全球交易------------
2021.3.23 二面(通过)
0. 自我介绍
1. 为什么选择上海,杭州base可以吗?
--->喜欢上海,杭州可以接受
2. 愿意系统学习Java吗?
--->愿意
3. 面试官详细地介绍了业务,并称我的一面答得挺好,不用问重复的问题了,直接约了leader面。
2021.3.26 三面 大老板面 (通过)
0. 自我介绍
1. 研究生入学了没?
---> 没
2. 空档期一年学了哪些知识?怎么学的?
---> 计算机基础四大课程,原本看视频,后面看书。
3. 为何快毕业了才决定转码呢?
---> 居家学习让我停下来思考我真正想要做什么
4. 问个操作系统,信号量是干什么的?
---> 进程间通信同步(位于共享内存和信号之后),线程间同步
5. 信号量还有哪些其他应用场景?
---> 不知道了,猜了一个系统性能监控
6. 输入一个网址到返回界面的过程?
发送http请求--->看本地缓存--->DNS解析出域名对应的IP地址--->TCP/IP五层协议--->可能会有代理(正向代理反向代理)--->TCP连接三次握手 / https认证,加密,解密
--->找到端口号--->nignx定位到应用--->mvc框架下从views找到路由--->验证权限--->解析url参数--->看服务器中的缓存--->代码逻辑中获取数据并返回html模板
--->服务端发送http响应--->浏览器渲染页面
7. 这里面HTTP层做了什么?
---> 解析get和post请求, 比如代码里http库有些api可以解析get请求,取出传入的参数。(我忘记提HTTPS了)
全部评论
(3) 回帖