阿里一面
1、首先讲自己的项目,项目的主要功能;流程设计;
打分的原理,怎么保证这个分值较为准确;1)首先进行阈值测量,看我的阈值设置多少范围;2)根据阈值进行打分;
距离计算以及时间计算的原理;约束条件的考虑;
相关算法进行实现描述和分析;
遇到的难点有哪些;
分配策略主要有哪些?贪心策略的任务分配具体讲一下,原理是什么?流程是什么?
2、研三是否实习?
3、HashMap和HashTable的区别,以及功能;
HashMap:数组+链表;数据+链表+红黑树;
HashTable:散列表,根据键值对和哈希函数,存放记录的数据;
4、垃圾回收算法
5、http协议;get和post的区别?
6、cookie和session区别?
cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。
存储在服务端:通过cookie存储一个session_id,然后具体的数据则是保存在session中。如果用户已经登录,则服务器会在cookie中保存一个session_id,下次再次请求的时候,会把该session_id携带上来,服务器根据session_id在session库中获取用户的session数据。
7、进程调度算法
8、数据库的应用
MySQL
分布式数据库的优缺点:
1.为什么选择分布式数据库?
优点如下:
(1)具有灵活的体系结构
(2)适应分布式的管理和控制机构
(3)经济性能优越
(4)系统的可靠性高、可用性好
(5)局部应用的响应速度快
(6)可扩展性好,易于集成现有系统。
2.相关的技术概念介绍
2.1什么是分布式数据库?
常见的分布式系统分为,
a)支持持久化存储的分布式存储系统;
b)着重计算的分布式计算框架;
c)分布式消息队列
根据不同的应用的领域,把上述分类细化,常见分布式存储系统分为:
1.分布式协同系统(分布式日志复制)
2.分布式任务调度框架
3.流计算框架
4.分布式文件/对象系统
5.分布式NoSQL存储
6.分布式关系数据库(OLAP、OLTP);
7.各种消息队列mq
一般很多人用ETCD,就是分布式协调系统(日志复制系统),其实就是paxos算法及其变体的实现。一般来说只存少量的元数据信息,所以,存储大规模文件,并且读取用ETCD是不合适的。
2.2不同的分布式数据库如何区分?
1.Key-value NoSQL
例如Redis Riak等;
2.column family NoSQL(wide column store)
典型的是Hbase Cassandra;
3.document NoSQL
典型的是mongodb
9、数据库索引
什么情况才适合做索引?什么情况不适合做索引?
10、网站登录设计和测试?
功能设计:登录、自动登录、记住密码、注册;缓存;
优化设计:
性能考虑:并发,
接口测试:
兼容性考虑:
用户界面设计和测试:
安全考虑:不安全情况:例如:SQL注入安全问题;token认证安全问题;登录名和密码加密;
11、接口对接考虑
12、机器学习:bug我真的只是知道,完全忘记,难受;
美团一面
1、自我介绍
2、研究生的研究方向?在这个方向做了哪些事情;
3、用到的设计模式
责任链模式:商城中过期处理,
4、MySQL中默认的存储引擎
MyISAM表
InnoDB表:为MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在 SELECT语句中提供一个类似Oracle的非锁定读。
5、事务的四种隔离级别
提交读:主要解决脏读;
详情:https://blog.csdn.net/ycy0706/article/details/100086322
可重读是什么?可以防止什么?
可避免脏读、不可重复读的发生;
6、数据库的几种特性?
1)原子性:事务内所有操作共同组成原子包;
2)一致性:事务执行前后都必须处于一致性状态;
3)隔离性:事务可以有多个原子包的形式并发执行,互不干扰。
4)持久性:事务提交,数据库状态永久发生了改变;
7、数据库索引
索引的类别?
聚集索引:
8、MVCC
数据库默认隔离级别:RR(Repeatable Read,可重复读),MVCC主要适用于Mysql的RC,RR隔离级别;
多版本并发控制
就是乐观锁的一种实现方式。在Java编程中,如果把乐观锁看成一个接口,MVCC便是这个接口的一个实现类而已。
9、TCP三次握手
为什么是三次不是四次?
握手过程以及挥手;
四次挥手
10、网络七层分别是什么?作用是什么?
工业届也是七层网络协议吗?
11、String和StringBuilder和StringBuffer区别
13、AOP进行解析,应用场景;
14、手撕代码
先说原理,然后编程实现;为什么这样设计,如何进行优化?
是否稳定?时间复杂度和空间复杂度是多少?
15、有没有实习的打算?
16、项目遇到了哪些问题?具体是什么问题?
17、死锁是什么?项目遇到死锁了吗?具体是什么?怎么解决的?
商城项目的死锁?查询的双重验证;修改;线程并发;
18、项目中用到了哪些优化?
explain分析SQL语句性能分析;优化SQL语句;减少多行查询;分解大关联查询;
19、为什么不继续学术研究?
20、线程并发问题?有没有遇到?怎么实现线程并发的?
1)synchronized 和ReentrantLock区别
前者jvm;后者jdk;
前者是java内置关键词;后者是java类;
前者无法判断获取锁的状态;后者可以判断是否获取锁;
前者自动释放;后者手动在finally手工释放;
前者的锁可重入、不可中断、非公平;后者可重入、可中断、可公平;
前者适合少量代码的同步访问控制;后者适合大量代码的同步问题;
3)ThreadLocal:共享数据
4)volatile,实现原理?实现内容?
5)线程池,相关参数
自己缺点总结:
1)问题回答,应该先回答总结性的内容,然后再介绍详细内容;
2)说话结巴:说话磨磨唧唧,感觉不够自信,语言组织不流畅。应该先想好再说,不要磕磕绊绊的说;
3)要自信一些,要有交互,别像机器人一样,就回复,不要重复说话;
4)问题想好再回答,总分总。