京东面试复盘(2019-7-16)

前言
以前看了很多大厂的面试题目,还有说哪个大厂好,哪个不好,面试问得多么多么深,都是瞎鬼,这里我想说两点:

  • 瘦死的骡子比马大,员工的面貌跟小厂的就是不一样
  • 面试官也是人,他要找的不是大牛,而是基础扎实,能一起工作的人

大厂需要这样的人(一面)
会拧螺丝:什么地方该拧多少圈,为什么拧几圈,拧的是什么部件,这个部件在整体的系统充当什么角色,如果坏了该怎么办,有没有改进的地方? 如果连螺丝刀都拿不稳,滚~

关于项目经验(二面)
没有Java经验是不行的,有完整的项目经验还不够,你必须知道他从头到尾的原理,数据为什么能传过来? 为什么这里定义了,那里就能用,到底是怎么传过去的?看过源码没有? 项目有什么要改进的地方? 并能够提供不止一个方案~

以下是题目:

1 MySQL 数据库,主从,主主,数据如何怎么写?
MySQL 如果是主从互备份,写入主库,在通过binlog同步到从库
https://www.cnblogs.com/ygqygq2/p/6045279.html
主主:指定只写一个主库,其他一个做为备用~~(上来就掉坑里了!血量80%)
你可以回答一主多从,或者双主多从,千万不要回答主主~

2 MyISAM和InnoDB的区别是什么?以及我们在项目中该怎么用?MySQL的版本用的哪个 5.7,为什么不是5.6
这里至少要答上来5点

回答出来以下内容,加分:
DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除
InnoDB的行锁,只是在WHERE的主键是有效的,非主键的WHERE都会锁全表的。

innodb引擎的4大特性
插入缓冲(insert buffer),二次写(double write),自适应哈希索引(ahi),预读(read ahead)
以下两点,面试时要回答出来~
5.5 默认是InnoDB一定要记住~
5.6 支持全文索引~

3 Nginx的负载均衡算法有哪几种,请手写加权轮询?
https://blog.csdn.net/larry_zeng1/article/details/80407745
核心在考你加权轮询算法,没说出来

4 Spring声明式事务是什么,数据库的事务隔离级别是什么,事务的传播级别又是什么?MySQL在RR级别如何实现串行化
事务用的是编程式,还是声明,为什么要这么用?
https://blog.csdn.net/weixin_38070406/article/details/78157603
这里一定要准备~~
https://blog.csdn.net/liang_0609/article/details/78062665
MVCC没有回答上来,其实面试官就想听你说这个~

5 Spring的bean的创建过程是什么样子的?加载流程是什么样子的?加载过程中涉及到哪些设计模式?
Xml – resources – beandefination - beanfactory
https://segmentfault.com/a/1190000012887776
必须要说的:工厂,代理
追问:代理是jdk的代理的,还是cglib的代理?

6 redirect和 forward的区别是什么?什么情况下会产生301和302,如果一次登录成功,抓包工具 会抓出来哪些状态? 如果登录失败了呢?
如果登录成功,会302,失败是401
301是临时重定向,302是永久
追问:是401 .?
答:是401.1

7 Java的锁有哪些种?Synchronized的底层原理是什么,是可重入的吗? 再说一下 RetrantLock的公平性与非公平性
记住 ,Synchronize一定是可重入,可重入,重要的事情说三遍!!(凉,血量50%)
这一点要自己说出来:Synchinized锁的范围有哪些? 答:变量,方法,代码块
加分点:monitorenter(监视器进入,获取锁)和monitorexit(监视器退出,释放锁),并且要成对

8 说一下HTTPS的原理,一个HTTPS请求,怎么样显示到浏览器啊上的?
他想让你把概念点说清楚要清楚

tip:http中的场景描述要准确,然后是tcp三次握手的状态要准确,否则被面试官白眼~~没商量(血量40%)
(这道题我准备了!!)

9 线程池的原理是什么? 在创建线程池的时候,怎么样把线程的参数传入进来?讲一下线程池的淘汰策略?
其实面试官想问的是这个:

加上的线程是什么类型? 重写runnable!
详见以下文章:
https://www.jianshu.com/p/ae67972d1156

然后就是想问这个:
AbortPolicy:直接抛出异常。
CallerRunPolicy: 直接在调用者(caller)线程中运行(run)当前被丢弃的任务
DiscardPolicy:默默的丢弃
DiscardOldestPolicy:丢弃最老的一个请求任务
(面试官心想:线程池都不扎实,这种人我们不要! HP:20%)

10 关于并发,如果有1000W的并发,Nginx负载均如何分? 怎么跟老板要机器? QPS是什么,他跟并发数有什么关系?
https://www.jianshu.com/p/159fb7805147

QPS(TPS)= 并发数 / 平均响应时间(这个公式都不会,HP:10%)
1000万并发:如果相应时间是5秒,就是200万QPS
QPS(TPS):每秒钟request/事务数量
并发数:系统同时处理的request/事务数
响应时间:一般取平均响应时间
理解了上面三个要素的意义之后,就能推算出它们之间的关系:

追问1:单台Nginx的并发量是多少? 5-10万
追问2:再说下秒杀系统的实现思路(不是架构)

这些网上很多~

11 说一下volatile关键字? 有什么特性? 怎么用? 它是线程安全的吗?
我回答:防止指令重排,保证可见性和有序性,很好~
追问:被volatile修饰的关键字存在哪?共享内存,很好~

是线程安全的吗?不完全保证(我回答是, game over:HP为0!!!)
因为虽然在一个线程内部是安全的,多个线程执行无法保证~
这句话没说出来:在访问volatile变量时不会执行加锁操作,也就不会执行线程阻塞,因此volatilei是比synchronized更轻量级的同步机制。
这句话必须要说出来:当要访问的变量已在synchronized代码块中,或者为常量时,没必要使用volatile。
加分项:
加入volatile关键字时,会多出一个lock前缀指令,Java内存模型将在写操作后插入一个写屏障指令,在读操作前插入一个读屏障指令。(回答出来加分)

总结:
1 每个知识点,先说什么,后说什么,组织语言,不能乱,前后不能矛盾
2 面试官会根据你的简历,还有他的知识储备进行问,要让面试官能够抓住你的点。
3 基础知识要踏实,马虎不得(我就栽在这里了)!关于原理,说对了不扣分,说错了额扣分,就是那么残酷!!
4 想通过出面,要把其中的2-3个问题答完美!!
5 秒杀系统要会(技术点,方案,会出现什么问题等等)
6 在写代码时,要区分哪些是JDK特有,哪些是Spring特有~

最后,大厂没有什么神奇的:门面漂亮,摊子大,工作节奏快,工资高
程序员是靠技术吃饭的,花架子使不得。
还要感谢面试官,是我开启了我的大厂面试之旅!!

面试官没问我Redis和消息队列,谢天谢地~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值