携程&拼多多研发面经

携程&拼多多研发面经

 

 

 

 

 

携程面经是参考我同学的面试经验写出来的,因为面试官的问题可能不怎么更新,所以有缘的小伙伴看看,说不定就面到了。

 

携程面经

一面:

租车事业部

1 项目讲一下

2 多线程并发读取数据库可能出现的问题,如何解决线程数不够带来的问题,我说了几种方式,一个是使用缓存,一个是使用数据库连接池,他问我能不能借助类似IO处理的方式来优化,于是我说了使用AIO异步处理。他问我有没有用过,我就大概说了一下。

3 Java的数据结构了解哪些,说一下linkedlist和ArrayList的区别,如果使用它们来存储字符串,哪个更合适呢,如果要进行字符串的增删改查和拼接操作呢。

4 多个string常量相加会有什么问题,我说会产生多个string,其实是会使用stringbuilder进行append操作,每次相加都会新建一个stringbuilder对象,比较低效。

而使用stringbuilder对象直接append则只有一个stringbuilder对象。

当使用for循环时,string相加会优化成一个stringbuilder进行append操作。

5 map是否线程安全,为什么不是呢,如何实现线程安全呢,除了用chm和hashtable还有别的方式吗,我说自己实现一个map然后重写get和put方法,加synchronized即可。

6 说几种你了解的设计模式,让我选一种写一下,果断写了枚举类单例。

7 http的方法有哪些,get和post的区别,get的url长度是否有限制,url很长会有什么问题,我说了安全问题,长度限制,以及处理麻烦,好像不是他想要的答案。

8 MySQL的索引怎么加,什么时候用不到索引,怎么建立索引。

9 线上报错了怎么办,log日志怎么打的,使用应用日志会有什么缺点,如果是全链路调用的日志要怎么记录,我联想到elk,不过没讲清楚。

10 redis的数据结构有哪些,使用过哪些。

11 git你们是怎么用的,有几个分支,上线报错了怎么办,可以直接回滚么。

12 Java的volatile关键字是怎么实现的。

13 java为什么要有多级的类加载器

换了个部门又面了一次

酒旅事业部:

1 拿出我写的笔试题,问我当时怎么想的,我就说使用顺序查找,他说这个复杂不达标,只能到o(n),但是不能到O(lgn),让我优化。

我刚开始说在输入时去做判断,他说要优化代码,不能直接在输入做。

于是开始思考,然后他给了我提示,说可以用hashmap,引导我说出key为日期,value为订单号的做法,然后我又以此类推说了另一个日期的操作。

最后终于想出来可以把开始日期到结束日期之间的时间都放到key里,然后只要命中就是符合条件的选项,这样的复杂度就是O(1)了。因为输入时直接放入map,用的时候读取即可。

2 问我项目里的一些东西。

3 网络编程方面,select,poll,epoll的区别,优缺点,使用场景。

4 Java的多线程

5 MySQL的聚簇索引和非聚簇索引,用不到索引的情况,非聚簇索引能有多个么,索引能建很多么,会有什么问题。

6 MySQL和redis配合,写一下get和set方法对应的流程图,先更新缓存还是数据库,不命中数据怎么办,然后又问如果是多线程的进行这类操作呢,我刚开始说事务,他说不是的,我又说用redis代理来完成这一操作,保证redis的读写自动触发mysql的读写,保证其事务性,但是他说这样太依赖于Redis了,会出问题。然后他问我一般如何保证多线程并发安全,我说可以使用锁,他说如果是集群环境呢,我说那么用分布式锁吧。他问我一般怎么实现分布式锁,我就说了redis和zk。

7 让我设计一系列关于权限管理的表,问我需要哪些表,我说就用户表,权限表吧,然后引导我说还需要一张职位表,但是一个用户可能有多个权限,并且权限是可变的,可以是多对多的关系,于是他又引导我写出了用户-权限的连接表。同理还需要一张职位-权限的连接表,于是一共需要五张表,可以说面试官还是很善良的。

8 一道开放智力题

一家餐馆,有6张小桌,四张大桌,平均用餐1小时, 门口有10个等待的人,6个人是一起的,另外2个人和2个人是分开的。问我在这些条件下如何预估我们两个人要等多久才能吃到饭,我就巴拉巴拉说了一堆,最后引导我说出了小桌要等60/6 = 10,前面两组20分钟,一共是30分钟。

 

拼多多

 

之前拼多多学霸批挂了,所以又来面了一次正式批,不同于学霸批,这次面试官和hr都不再热情,而是给我一种很不耐烦的感觉,面试体验很差,所以草草面完了。

 

一面:

1 项目

2 笔试题,循环小数,说一下思路

3 说一下SpringMVC和Spring,hibernate

4 MySQL数据库和Redis说一下

5 分布式锁怎么使用,setnx和设置超时是两条指令,怎么保证原子性,可以使用lua脚本保证在事务中执行。

6 你们的Redis是怎么用的,如何做缓存更新。

7 jvm内存分区,线程池工作原理。

8 算法题,abbaabbaaa这样的字符串,怎么变成aaabbbaaa,这种形式的字符串

。其中a和b的个数都可以是0到n个。

刚开始说用dfs删除元素,后来说了用map和其他容器来存元素个数,都不对,

最后面试官说,可以用两个for循环设置i和j两个断点

 

二面

HR叽里呱啦,很不耐烦的样子

1 拿了几个offer了

2 对拼多多有什么了解

3 我们工作压力大你能接受么

4 薪酬你预计要多少

5 城市选择问题

6 女朋友,家里人的想法

7 职业规划。

 

三面

1 算法题,两个栈实现一个队列,并且要维护队列的最小值。

没答好,很烦。

2 然后问基础,Java容器,linkedhashmap,3 hashmap实现,treemap实现

3 Java多线程的状态,实现方式,通信方式

4 MySQL,redis巴拉巴拉

5 单点登陆实现,cookie不能跨域怎么办。能否直接绑定ip访问session

6 项目经历介绍

感觉面试官态度不太好,也就随便面完了。

 

 

 

 

 

 

▼更多精彩内容

 

今日头条研发面经

蚂蚁金服研发面经

百度研发面经整合版

拼多多&快手研发面经

美团&京东研发面经

 

微信公众号【黄小斜】大厂程序员,互联网行业新知,终身学习践行者。关注后回复「Java」、「Python」、「C++」、「大数据」、「机器学习」、「算法」、「AI」、「Android」、「前端」、「iOS」、「考研」、「BAT」、「校招」、「笔试」、「面试」、「面经」、「计算机基础」、「LeetCode」 等关键字可以获取对应的免费学习资料。 

 

 

                     

 

### 携程研发试经验总结 #### 技术问题 在携程研发岗位试中,技术问题是核心考察部分之一。通常会涉及机器学习、数据分析、推荐系统等领域的内容。例如,在构建客户流失预测模型的过程中,数据预处理是一个重要的环节[^1]。这一步骤包括但不限于去除无效数据、重复数据异常值,从而提升数据质量[^2]。 对于算法实现方,可能会被问到如何优化特定的计算过程。比如梯度下降方法中的参数更新公式可以表示如下: ```python def gradient_descent(u, v, alpha, r_ij): u_new = u - alpha * ((u @ v.T - r_ij) * v) v_new = v - alpha * ((u @ v.T - r_ij) * u) return u_new, v_new ``` 此代码片段展示了基于矩阵乘法的梯度下降更新逻辑[^3]。 #### 项目经历 在准备项目经历时,建议重点描述以下几个方的内容:一是项目的背景与目标;二是个人承担的具体职责及贡献;三是遇到的技术挑战及其解决方案。以客户流失预测为例,其目的是利用历史数据建立有效的分类器来评估潜在风险客户群组[^1]。在此过程中,候选人需展示自己是如何设计实验流程并验证假设有效性的能力。 另外值得注意的是,除了理论知识外,实际动手能力工具使用的熟练程度也是考量因素之一。因此提到某个具体案例时最好能够结合SQL查询语句编写技巧或者Python脚本开发实例加以说明。 #### 算法题 针对常见的笔试或现场编码测试题目类型,主要包括字符串匹配、动态规划等问题解决思路训练。下给出一个简单的例子——寻找最长公共子序列(LCS),这是一个典型的动态规划应用场景: ```python def lcs_length(X, Y): m = len(X) n = len(Y) L = [[None]*(n + 1) for _ in range(m + 1)] for i in range(m + 1): for j in range(n + 1): if i == 0 or j == 0 : L[i][j] = 0 elif X[i-1] == Y[j-1]: L[i][j] = L[i-1][j-1]+1 else: L[i][j] = max(L[i-1][j],L[i][j-1]) return L[m][n] X = "AGGTAB" Y = "GXTXAYB" print(f"The length of LCS is {lcs_length(X,Y)}") ``` 该函数实现了两个输入串之间最大相同字符数目的查找功能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Java技术江湖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值