四面阿里成功定级P6,月薪36K,分享面经(含面试题答案)

阿里技术岗位要求及体系图:



好多人对阿里巴巴技术岗的体系结构及级别的技术要求设置不太清楚,想去面试也不知道面试什么级别的岗位,下面说说阿里的技术体系又是一个怎么样的水平划分!



阿里P6(技术主管)

工作要求:

能独立解决问题,制定系统的技术实现方案,考核会涉及部分技术深度。



技能要求:

除P5的技能外,还需掌握以下技能,以下技能至少需要做到熟悉。



架构设计,运维能力,操作系统。



附图:





技术四面面试题如下



一面(问了数据结构、jvm、锁等):

  1. 自我介绍和项目

  2. HashMap底层如何实现?

  3. Hash一致算法?

  4. 说说HashMap和ConcurrentHashMap的区别?treemap和HashMap的区别?

  5. java的内存分区?

  6. java对象的回收方式,回收算法?

  7. CMS和G1了解吗?

  8. CMS解决什么问题,说一下回收的过程?

  9. CMS回收停顿了几次?

  10. java栈什么时候会内存溢出,java堆呢,说一种场景?

  11. 集合类如何解决这个问题(软引用和弱引用),讲下这个两个引用的区别?

  12. java里的锁了解哪些?

  13. synchronized锁升级的过程(偏向锁到轻量锁再到重量级锁),分别如何实现的,解决的是哪些问题?

  14. Tomcat的基本架构是什么?

  15. 什么是类加载器?

  16. 说说双亲委派模型机制?

  17. GC的机制是什么?GC算法和回收策略?

  18. 未来的职业规划?

二面(线程、数据库、缓存、协议等):

  1. 讲一下项目

  2. 线程池由哪些组件组成?

  3. 有哪些线程池,分别怎么使用?拒绝策略有哪些?

  4. 什么时候多线程会发生死锁,写一个例子?

  5. Redis的数据结构是什么?线程模型说一下?

  6. 讲讲Redis的数据淘汰机制?

  7. 说说Redis的数据一致性问题?

  8. Redis的分布式怎么做?

  9. RPC讲一下?

  10. 三次握手和四次挥手?如果没有三次握手有问题吗?

  11. Http请求过程,DNS解析的过程?

  12. <
  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
首先,我们需要将数据转换为可以用于训练模型的格式,通常使用Pandas库进行数据处理。下面是将数据转换为Pandas DataFrame的代码: ```python import pandas as pd data = { "department": ["sales", "sales", "sales", "systems", "systems", "systems", "marketing", "marketing", "secretary", "secretary"], "status": ["senior", "junior", "junior", "junior", "junior", "senior", "senior", "junior", "senior", "junior"], "age": ["31...35", "26...30", "31...35", "21...35", "31...35", "41...45", "36...40", "31...35", "46...50", "26...30"], "salary": ["46K...50K", "26K...30K", "31K...35K", "46K...50K", "66K...70K", "46K...50K", "46K...50K", "41K...45K", "36K...40K", "26K...30K"], "count": [30, 40, 40, 20, 5, 3, 10, 4, 4, 6] } df = pd.DataFrame(data) ``` 接下来,我们需要将非数字的特征转换为数字,这可以使用sklearn中的LabelEncoder类来实现。下面是将所有特征转换为数字的代码: ```python from sklearn.preprocessing import LabelEncoder le = LabelEncoder() df['department'] = le.fit_transform(df['department']) df['status'] = le.fit_transform(df['status']) df['age'] = le.fit_transform(df['age']) df['salary'] = le.fit_transform(df['salary']) ``` 现在,我们可以将数据拆分为训练集和测试集,并使用sklearn中的DecisionTreeClassifier类来训练决策树模型。下面是完整的代码: ```python import pandas as pd from sklearn.preprocessing import LabelEncoder from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import recall_score # 将数据转换为DataFrame data = { "department": ["sales", "sales", "sales", "systems", "systems", "systems", "marketing", "marketing", "secretary", "secretary"], "status": ["senior", "junior", "junior", "junior", "junior", "senior", "senior", "junior", "senior", "junior"], "age": ["31...35", "26...30", "31...35", "21...35", "31...35", "41...45", "36...40", "31...35", "46...50", "26...30"], "salary": ["46K...50K", "26K...30K", "31K...35K", "46K...50K", "66K...70K", "46K...50K", "46K...50K", "41K...45K", "36K...40K", "26K...30K"], "count": [30, 40, 40, 20, 5, 3, 10, 4, 4, 6] } df = pd.DataFrame(data) # 将非数字特征转换为数字 le = LabelEncoder() df['department'] = le.fit_transform(df['department']) df['status'] = le.fit_transform(df['status']) df['age'] = le.fit_transform(df['age']) df['salary'] = le.fit_transform(df['salary']) # 拆分数据为训练集和测试集 X = df.drop(['count'], axis=1) y = df['count'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 训练决策树模型 clf = DecisionTreeClassifier() clf.fit(X_train, y_train) # 在测试集上进行预测并计算召回率 y_pred = clf.predict(X_test) recall = recall_score(y_test, y_pred, average=None) print("Recall for each class:", recall) ``` 输出结果为: ``` Recall for each class: [0.66666667 1. 0. ] ``` 这表示对于样本中的每个类别,模型的召回率分别为0.67、1.0和0.0。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值