机器学习算法与应用示例大全2025

机器学习算法与应用示例大全

一、基础算法实现示例

1. 回归算法

线性回归‌是最基础的回归算法,广泛应用于预测问题。模型假设输出变量与输入变量之间存在线性关系。使用scikit-learn库进行线性回归的代码如下:

pythonCopy Codeimport numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# 生成示例数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

# 创建并训练模型
model = LinearRegression()
model.fit(X, y)

# 进行预测
y_pred = model.predict(X)

# 计算均方误差
mse = mean_squared_error(y, y_pred)
print(f"均方误差: {mse:.2f}")

逻辑回归‌是解决二分类问题的经典算法,通过Sigmoid函数将线性回归的连续输出转化为0和1的概率:

pythonCopy Codeimport numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

# 生成二分类数据
X = np.random.randn(100, 2)
y = (X[:, 0] + 2*X[:, 1] > 0).astype(int)

# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 创建并训练模型
model = LogisticRegression()
model.fit(X_train, y_train)

# 评估模型
accuracy = model.score(X_test, y_test)
print(f"准确率: {accuracy:.2f}")

2. 分类算法

K近邻(KNN)‌算法是最简单的分类算法之一,其核心思想是用距离目标最近的k个样本数据的分类来代表目标的分类:

pythonCopy Codefrom sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X, y)

# 预测
y_pred = knn.predict(X[:2])
print(f"预测结果: {y_pred}")

支持向量机(SVM)‌通过寻找最优超平面来最大化不同类别之间的间隔:

pythonCopy Codefrom sklearn.svm import SVC
from sklearn.datasets import make_classification

# 生成分类数据
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0)

# 创建SVM分类器
svm = SVC(kernel='linear')

# 训练模型
svm.fit(X, y)

# 预测
y_pred = svm.predict(X[:2])
print(f"预测结果: {y_pred}")

3. 聚类算法

K均值聚类‌是最经典的基于划分的聚类方法,其基本思想是以空间中k个点为中心进行聚类:

pythonCopy Codefrom sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

# 生成聚类数据
X, y = make_blobs(n_samples=100, centers=3, n_features=2, random_state=42)

# 创建K均值聚类器
kmeans = KMeans(n_clusters=3)

# 训练模型
kmeans.fit(X)

# 获取聚类标签
labels = kmeans.labels_
print(f"聚类标签: {labels}")

层次聚类‌通过自底向上的方式构建树状聚类图:

pythonCopy Codefrom sklearn.cluster import AgglomerativeClustering

# 创建层次聚类器
agglo = AgglomerativeClustering(n_clusters=3)

# 训练模型
agglo.fit(X)

# 获取聚类标签
labels = agglo.labels_
print(f"聚类标签: {labels}")

二、实际应用案例

1. 金融领域应用

客户价值预测‌:通过收集客户的多维度数据,如人口统计学信息、消费历史、线上行为等,构建预测模型。企业可以使用梯度提升树(如XGBoost、LightGBM)等算法预测客户未来一段时间内的消费潜力,从而制定个性化的营销策略19。

市场需求预测‌:生产制造企业通过分析历史销售数据、季节因素、宏观经济指标等,采用时间序列分析方法(如ARIMA、SARIMA)结合回归分析算法,预测下一季各款产品的市场需求,合理安排生产计划19。

2. 医疗健康领域

基因与数量性状关联‌:全基因组关联(GWA)研究旨在理解数以万计的基因标记之间的关系,这些基因标记来自于众多领域的人类基因组,包含高血压/胆固醇、心脏病、糖尿病、各种癌症以及其他疾病。回归作为一种常用工具,用来理解基因标记(特征)与胆固醇或葡萄糖水平(连续的输出变量)等数量性状之间的复杂关系15。

医疗数据集分析‌:基于Python与机器学习的医疗数据集分析实践,包含数据预处理和多种分类模型的实现,帮助医疗工作者从海量数据中发现有价值的信息

3. 经典项目案例

鸢尾花分类‌:这是机器学习领域的"Hello World"项目,通过测量花的四个属性(萼片长度、萼片宽度、花瓣长度、花瓣宽度)来分类三种不同的鸢尾花。使用scikit-learn可以轻松实现:

pythonCopy Codefrom sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

# 评估模型
accuracy = knn.score(X_test, y_test)
print(f"准确率: {accuracy:.2f}")

手写数字识别‌:使用MNIST数据集,包含60,000个训练样本和10,000个测试样本,每个样本是28×28像素的手写数字灰度图像。可以使用卷积神经网络(CNN)实现高精度的识别:

pythonCopy Codeimport torch
import torch.nn as nn
import torchvision.datasets as datasets
import torchvision.transforms as transforms

# 数据预处理
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5,), (0.5,))
])

# 加载数据集
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
test_dataset = datasets.MNIST(root='./data', train=False, download=True, transform=transform)

# 定义模型
class MNISTModel(nn.Module):
    def __init__(self):
        super(MNISTModel, self).__init__()
        self.fc1 = nn.Linear(28*28, 512)
        self.fc2 = nn.Linear(512, 256)
        self.fc3 = nn.Linear(256, 10)
    
    def forward(self, x):
        x = x.view(-1, 28*28)
        x = torch.relu(self.fc1(x))
        x = torch.relu(self.fc2(x))
        x = self.fc3(x)
        return x

# 创建模型、损失函数和优化器
model = MNISTModel()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters())

# 训练模型
for epoch in range(5):
    for batch_idx, (data, target) in enumerate(train_loader):
        optimizer.zero_grad()
        output = model(data)
        loss = criterion(output, target)
        loss.backward()
        optimizer.step()

三、主流框架使用示例

1. scikit-learn

scikit-learn是Python中最受欢迎的机器学习库之一,提供了一套强大且易用的工具:

pythonCopy Codefrom sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import classification_report

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# 创建SVM分类器
svm = SVC(kernel='linear')

# 训练模型
svm.fit(X_train, y_train)

# 预测
y_pred = svm.predict(X_test)

# 评估模型
print(classification_report(y_test, y_pred))

2. TensorFlow

TensorFlow是谷歌开发的开源机器学习框架,适合构建和部署大规模机器学习模型:

pythonCopy Codeimport tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# 创建序列模型
model = Sequential([
    Dense(64, activation='relu', input_shape=(784,)),
    Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 加载MNIST数据集
mnist = tf.keras.datasets.mnist
(X_train, y_train), (X_test, y_test) = mnist.load_data()

# 预处理数据
X_train = X_train.reshape(-1, 784).astype('float32') / 255
X_test = X_test.reshape(-1, 784).astype('float32') / 255

# 训练模型
model.fit(X_train, y_train, epochs=5, batch_size=32)

# 评估模型
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"准确率: {test_acc:.4f}")

3. PyTorch

PyTorch是Facebook开发的深度学习框架,以其动态计算图和灵活性著称:

pythonCopy Codeimport torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset

# 定义模型
class NeuralNetwork(nn.Module):
    def __init__(self):
        super(NeuralNetwork, self).__init__()
        self.flatten = nn.Flatten()
        self.linear_relu_stack = nn.Sequential(
            nn.Linear(28*28, 512),
            nn.ReLU(),
            nn.Linear(512, 512),
            nn.ReLU(),
            nn.Linear(512, 10)
        )
    
    def forward(self, x):
        x = self.flatten(x)
        logits = self.linear_relu_stack(x)
        return logits

# 创建模型、损失函数和优化器
model = NeuralNetwork()
loss_fn = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters())

# 加载MNIST数据集
train_dataset = TensorDataset(X_train, y_train)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)

# 训练模型
for epoch in range(5):
    for batch_idx, (X_batch, y_batch) in enumerate(train_loader):
        # 前向传播
        y_pred = model(X_batch)
        loss = loss_fn(y_pred, y_batch)
        
        # 反向传播和优化
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        
        if batch_idx % 100 == 0:
            print(f"Epoch {epoch+1}, Batch {batch_idx}, Loss: {loss.item():.4f}")

四、模型调优与评估

1. 调优方法

网格搜索(Grid Search)‌是暴力搜索方法,在给定超参搜索空间内,尝试所有超参组合:

pythonCopy Codefrom sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC

# 定义参数网格
param_grid = {
    'C': [0.1, 1, 10],
    'gamma': [1, 0.1, 0.01],
    'kernel': ['rbf', 'linear']
}

# 创建SVM分类器
svm = SVC()

# 创建网格搜索对象
grid_search = GridSearchCV(svm, param_grid, cv=5)

# 执行网格搜索
grid_search.fit(X_train, y_train)

# 获取最佳参数
best_params = grid_search.best_params_
print(f"最佳参数: {best_params}")

# 获取最佳模型
best_model = grid_search.best_estimator_

MaP.qfmfsk.INFO/PoTs/1120_132008.HtM

MaP.qfmfsk.INFO/PoTs/1120_690774.HtM

MaP.qfmfsk.INFO/PoTs/1120_345420.HtM

MaP.qfmfsk.INFO/PoTs/1120_912011.HtM

MaP.qfmfsk.INFO/PoTs/1120_899886.HtM

MaP.qfmfsk.INFO/PoTs/1120_690877.HtM

MaP.qfmfsk.INFO/PoTs/1120_576588.HtM

MaP.qfmfsk.INFO/PoTs/1120_011043.HtM

MaP.qfmfsk.INFO/PoTs/1120_051088.HtM

MaP.qfmfsk.INFO/PoTs/1120_701918.HtM

MaP.qfmfsk.INFO/PoTs/1120_277542.HtM

MaP.qfmfsk.INFO/PoTs/1120_356531.HtM

MaP.qfmfsk.INFO/PoTs/1120_700764.HtM

MaP.qfmfsk.INFO/PoTs/1120_244431.HtM

MaP.qfmfsk.INFO/PoTs/1120_777753.HtM

MaP.qfmfsk.INFO/PoTs/1120_798665.HtM

MaP.qfmfsk.INFO/PoTs/1120_677854.HtM

MaP.qfmfsk.INFO/PoTs/1120_088644.HtM

MaP.qfmfsk.INFO/PoTs/1120_145331.HtM

MaP.qfmfsk.INFO/PoTs/1120_347764.HtM

MaP.qfmfsk.INFO/PoTs/1120_477532.HtM

MaP.qfmfsk.INFO/PoTs/1120_611190.HtM

MaP.qfmfsk.INFO/PoTs/1120_121298.HtM

MaP.qfmfsk.INFO/PoTs/1120_264534.HtM

MaP.qfmfsk.INFO/PoTs/1120_577755.HtM

MaP.qfmfsk.INFO/PoTs/1120_690878.HtM

MaP.qfmfsk.INFO/PoTs/1120_700899.HtM

MaP.qfmfsk.INFO/PoTs/1120_345301.HtM

MaP.qfmfsk.INFO/PoTs/1120_799975.HtM

MaP.qfmfsk.INFO/PoTs/1120_144231.HtM

MaP.qfmfsk.INFO/PoTs/1120_123222.HtM

MaP.qfmfsk.INFO/PoTs/1120_700764.HtM

MaP.qfmfsk.INFO/PoTs/1120_365344.HtM

MaP.qfmfsk.INFO/PoTs/1120_912232.HtM

MaP.qfmfsk.INFO/PoTs/1120_922188.HtM

MaP.qfmfsk.INFO/PoTs/1120_345411.HtM

MaP.qfmfsk.INFO/PoTs/1120_365221.HtM

MaP.qfmfsk.INFO/PoTs/1120_567645.HtM

MaP.qfmfsk.INFO/PoTs/1120_679875.HtM

MaP.qfmfsk.INFO/PoTs/1120_712019.HtM

MaP.qfmfsk.INFO/PoTs/1120_234311.HtM

MaP.qfmfsk.INFO/PoTs/1120_919098.HtM

MaP.qfmfsk.INFO/PoTs/1120_900199.HtM

MaP.qfmfsk.INFO/PoTs/1120_690886.HtM

MaP.qfmfsk.INFO/PoTs/1120_800008.HtM

MaP.qfmfsk.INFO/PoTs/1120_800886.HtM

MaP.qfmfsk.INFO/PoTs/1120_922099.HtM

MaP.qfmfsk.INFO/PoTs/1120_489975.HtM

MaP.qfmfsk.INFO/PoTs/1120_143332.HtM

MaP.qfmfsk.INFO/PoTs/1120_611377.HtM

MaP.qfmfsk.INFO/PoTs/1120_477543.HtM

MaP.qfmfsk.INFO/PoTs/1120_256442.HtM

MaP.qfmfsk.INFO/PoTs/1120_900888.HtM

MaP.qfmfsk.INFO/PoTs/1120_946857.HtM

MaP.qfmfsk.INFO/PoTs/1120_587856.HtM

MaP.qfmfsk.INFO/PoTs/1120_901098.HtM

MaP.qfmfsk.INFO/PoTs/1120_803503.HtM

MaP.qfmfsk.INFO/PoTs/1120_233201.HtM

MaP.qfmfsk.INFO/PoTs/1120_487401.HtM

MaP.qfmfsk.INFO/PoTs/1120_700997.HtM

MaP.qfmfsk.INFO/PoTs/1120_235209.HtM

MaP.qfmfsk.INFO/PoTs/1120_133311.HtM

MaP.qfmfsk.INFO/PoTs/1120_700097.HtM

MaP.qfmfsk.INFO/PoTs/1120_800085.HtM

MaP.qfmfsk.INFO/PoTs/1120_811022.HtM

MaP.qfmfsk.INFO/PoTs/1120_678676.HtM

MaP.qfmfsk.INFO/PoTs/1120_455000.HtM

MaP.qfmfsk.INFO/PoTs/1120_234320.HtM

MaP.qfmfsk.INFO/PoTs/1120_788855.HtM

MaP.qfmfsk.INFO/PoTs/1120_901976.HtM

MaP.qfmfsk.INFO/PoTs/1120_011998.HtM

MaP.qfmfsk.INFO/PoTs/1120_125531.HtM

MaP.qfmfsk.INFO/PoTs/1120_100888.HtM

MaP.qfmfsk.INFO/PoTs/1120_689866.HtM

MaP.qfmfsk.INFO/PoTs/1120_833290.HtM

MaP.qfmfsk.INFO/PoTs/1120_699865.HtM

MaP.qfmfsk.INFO/PoTs/1120_797660.HtM

MaP.qfmfsk.INFO/PoTs/1120_600766.HtM

MaP.qfmfsk.INFO/PoTs/1120_233530.HtM

MaP.qfmfsk.INFO/PoTs/1120_688866.HtM

MaP.qfmfsk.INFO/PoTs/1120_921008.HtM

MaP.qfmfsk.INFO/PoTs/1120_699766.HtM

MaP.qfmfsk.INFO/PoTs/1120_146420.HtM

MaP.qfmfsk.INFO/PoTs/1120_834120.HtM

MaP.qfmfsk.INFO/PoTs/1120_888775.HtM

MaP.qfmfsk.INFO/PoTs/1120_690767.HtM

MaP.qfmfsk.INFO/PoTs/1120_033199.HtM

MaP.qfmfsk.INFO/PoTs/1120_123319.HtM

MaP.qfmfsk.INFO/PoTs/1120_154656.HtM

MaP.qfmfsk.INFO/PoTs/1120_789863.HtM

MaP.qfmfsk.INFO/PoTs/1120_012208.HtM

MaP.qfmfsk.INFO/PoTs/1120_788876.HtM

MaP.qfmfsk.INFO/PoTs/1120_124410.HtM

MaP.qfmfsk.INFO/PoTs/1120_612087.HtM

MaP.qfmfsk.INFO/PoTs/1120_605299.HtM

MaP.qfmfsk.INFO/PoTs/1120_155443.HtM

MaP.qfmfsk.INFO/PoTs/1120_368634.HtM

MaP.qfmfsk.INFO/PoTs/1120_035432.HtM

MaP.qfmfsk.INFO/PoTs/1120_457535.HtM

MaP.qfmfsk.INFO/PoTs/1120_054531.HtM

MaP.qfmfsk.INFO/PoTs/1120_799775.HtM

MaP.qfmfsk.INFO/PoTs/1120_478666.HtM

MaP.qfmfsk.INFO/PoTs/1120_011099.HtM

MaP.qfmfsk.INFO/PoTs/1120_357543.HtM

MaP.qfmfsk.INFO/PoTs/1120_364331.HtM

MaP.qfmfsk.INFO/PoTs/1120_781108.HtM

MaP.qfmfsk.INFO/PoTs/1120_576442.HtM

MaP.qfmfsk.INFO/PoTs/1120_145310.HtM

MaP.qfmfsk.INFO/PoTs/1120_944331.HtM

MaP.qfmfsk.INFO/PoTs/1120_422093.HtM

MaP.qfmfsk.INFO/PoTs/1120_353434.HtM

MaP.qfmfsk.INFO/PoTs/1120_355442.HtM

MaP.qfmfsk.INFO/PoTs/1120_344531.HtM

MaP.qfmfsk.INFO/PoTs/1120_234431.HtM

MaP.qfmfsk.INFO/PoTs/1120_457753.HtM

MaP.qfmfsk.INFO/PoTs/1120_244642.HtM

MaP.qfmfsk.INFO/PoTs/1120_588645.HtM

MaP.qfmfsk.INFO/PoTs/1120_045221.HtM

MaP.qfmfsk.INFO/PoTs/1120_566665.HtM

MaP.qfmfsk.INFO/PoTs/1120_266633.HtM

MaP.qfmfsk.INFO/PoTs/1120_255322.HtM

MaP.qfmfsk.INFO/PoTs/1120_789867.HtM

MaP.qfmfsk.INFO/PoTs/1120_753656.HtM

#秋招吐槽大会#
全部评论

相关推荐

飞屋一号:包住还有每工作日餐补,已经比很多公司的实习强了吧
点赞 评论 收藏
分享
被前mentor说进不了TME,现在转正了。我有两段实习,前一段也是在一个音乐平台,回想起来,实习开局颇为不顺,第一个月对业务不熟导致一些差错。单聊时被mentor压力,说我产出不够,转正困难。后面他问我想进哪一个公司,反正留不下,我直接说腾讯音乐,他说我进不了腾讯音乐。本来打算熬够3个月,够刷一段简历就走,和mentor聊完,立马提桶跑路了,还浪费了我宜家200块买的小床垫。一、回学校就抓紧投了TME,还真拿了实习的offer。开始实习的时候,就一个状态,什么都无所谓,先立flag:在TME实习,存活且转正。mentor接我到工位,并且在中午请我吃了第一餐,豪刺!我的mentor是常说的那种从学历智商到工作能力,完全向下兼容我,但依然提供超级多情绪价值的人。这里的氛围是真爱夸夸啊,看到我干点什么小事儿或者提出点什么想法都能夸一句,属实给我情绪价值拉满了,搞得还有点不好意思到点下班(不可能本小老鼠已经要上天堂了,具体表现为每天上班都很积极,平时组里开会也大家都会带我去听。众所周知,实习生穷的一批,但靠着各位榜一的慷慨过得还不错。具体表现为组里有羊毛就薅,没有羊毛就要(bushi表现为mentor会经常带我中午去吃好吃的,同事们也常常投喂。我的岗位是做算法的,现在TME不少团队都在做AI,所以组里每周都会有一个前沿分享会,分头一起看点论文分享热点,一起讨探讨一些和业务不是那么直接相关的前沿问题。这个体验还是蛮好的,每周这个时候我都有点恍惚,到底是不是在学校。我在的组感觉哥哥姐姐们都是高能量人群,下班之后都忙着去玩自己的事儿,大家都很chill(没什么内卷,把想来扣在评论区)二、实习到转正到现在,发现会上班真的是一种能力!mentor 教我发脾气,为我兜底也让我松弛了。“你不需要这么 nice的”“这样的情况该怼就怼,不要憋气”也教我抓住机会,他在旁边给我兜底。我想多锻炼,mentor甚至专门去找leader要了点活过来给我。经过熟悉后,便开始交给我做具体的业务开发,我目前做的是音乐软件的搜索和推荐功能。具体说说就是当用户搜索某首歌曲时,系统需要智能展示其不同版本,在推荐场景中,则需要准确识别用户偏好并推送可能感兴趣的歌曲。我深刻地体会到了一段好的实习是无论你做什么分析和策略,背后都有人能给出客观的建议和有力的托举,通过own一些项目去成长,最有成就感的莫过于最终取得收益并推全的那一刻,和转正答辩通过的那一刻,好幸运能体验到这些!确实不是每个人都能轻松获得理想的实习机会,但还是要试着为自己创造可能。另外,心态调整也很关键。现在能拿到offer本身就不容易,甚至我身边不少同学到现在还在积极求职。三、下面分享一些我认为对成功转正有帮助的tips!!关键:确认headcount建议面试就问,到实习中期也找合适的机会主动问问mt或hr。如果这个岗位不是明确有转正,要表达你想留下来的意愿,试探有没有机会。一定厚脸皮问!这关系到你后面几个月的努力方向。一旦确定有hc,就尽快搞清楚转正需要满足哪些条件:比如实习天数、答辩流程、考核标准。心中有数,平时工作的时候也能有意识地去积累相关案例和数据。实习期间:谁不喜欢一个靠谱、主动、还有自己想法的实习生呢交给自己的事,尽量做到“事事有回应”,搞清楚需求再动手,明确交付时间和形式;我习惯把长期任务拆成几个阶段,每个节点都找导师对一下思路和框架,避免跑偏;定期主动沟通进度,简单复盘近期工作,也和同事保持友好交流,这些小事也很加分。答辩那天:人设!人设立出来(自己的记忆点)我的答辩框架(供参考:简单介绍自己(背景+实习岗位)整体工作概述重点讲1-2个项目(突出自己的角色和贡献)复盘与反思(学到了什么、哪些可以做得更好)未来的规划(想在这个岗位上成长为什么样的人)答辩前也可以提前准备一些常见问题的回答,比如:你觉得这个岗位最需要什么能力?实习中遇到最大的困难是什么?怎么解决的?你觉得自己最大的优势是什么?未来想在哪个方向深耕?!还有backup选项万一转正没通过,也别慌忙放弃。可以问问部门内部或者其他团队有没有校招hc,争取被推荐到其他岗位。很多同学都是通过内部推荐成功上岸的,近水楼台先得月!最后,无论大家拿到什么样的offer,都试着用积极的心态去面对和适应吧,之后再根据实际情况逐步调整、改变,毕竟世界上唯一不变的是变化本身。
__never_mi...:TME 感觉真不错吧
腾讯音乐娱乐集团成长空间 274人发布
点赞 评论 收藏
分享
头像
11-05 10:55
中南大学 Java
要双修的猫头鹰:这面试官怕不是个m
我来点评面试官
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务