Java阿里+美团一面问题总结-8.30

阿里一面

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)问题想好再回答,总分总。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋葱ycy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值