回复: 0
跳转到指定楼层
上一主题 下一主题
收起左侧

Baidu USA OA, Database C++测试代码

全局:

2017(4-6月) 码农类General 硕士 全职@百度 - 网上海投 - 在线笔试  | | Other | 应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
昨天做的Baidu USA OA,题型和题目已经很全了,参阅:

我碰到的编程题是database实现,这里共享一个C++的测试文件~

难点在于不同版本的jion,时间紧只实现了最简单的O(n*n)复杂度的合并。

#include <iostream>
#include <map>
#include <string>
#include <vector>
#include <climits>
#include <set>

using namespace std;

class Table {
public:
    Table(const string& name, const vector<string>& column_names, const vector<vector<string> > data) : name_(name), column_names_(column_names), data_(data) {}

    const string& name() const { return name_; }
    const vector<string>& column_names() const { return column_names_; }
    const vector<vector<string> >& data() const { return data_; }

    // Callee will own the returned pointer
    Table* Select(const vector<string>& column_names) const {
        // IMPLEMENT ME

        return new Table("Select", {}, vector<vector<string>> {});
    }

    // Callee will own the returned pointer
    Table* Where(const string& column_name, const string& value) const {
        // IMPLEMENT ME

        return new Table("Where", {}, vector<vector<string>> {});
    }

    void Print() {
        string output = JoinStringVector(column_names_);
        output += "\n";
        for (size_t row_index = 0; row_index < data_.size(); ++row_index) {
            output += JoinStringVector(data_[row_index]);
            output += "\n";
        }
        cout << output << endl;
    }

private:
    string JoinStringVector(const vector<string>& input) {
        string output = "";
        bool has_data = false;
        for (size_t i = 0; i < input.size(); ++i) {
            has_data = true;
            output += input[i];
            output += ", ";
        }
        if (has_data) {
            output = output.substr(0, output.length() - 2);
        }
        return output;
    }
    const string name_;
    const vector<string> column_names_;
    const vector<vector<string> > data_
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
   delete projected_table;
        delete table;
    }

    // should print
    // users.name, salaries.amount
    // Ian, 100
    // John, 150
    // John, 200
    // Mark, 200
    // Mark, 300
    // , 400
    {
        Table* table = db->RightJoin(
                                     db->GetTable("users"),
                                     "id",
                                     db->GetTable("salaries"),
                                     "user_id");
        Table* projected_table = table->Select({ "users.name", "salaries.amount" });
        projected_table->Print();
        delete projected_table;
        delete table;
    }

    // should print
    // users.name, salaries.amount
    // Ian, 100
    // John, 150
    // John, 200
    // Mark, 200
    // Mark, 300
    // Eddie,
    // , 400
    {
        Table* table = db->OuterJoin(
                                     db->GetTable("users"),
                                     "id",
                                     db->GetTable("salaries"),
                                     "user_id");
        Table* projected_table = table->Select({ "users.name", "salaries.amount" });
        projected_table->Print();
        delete projected_table;
        delete table;
    }

    delete db;
}

#endif




上一篇:FB onsite 挂经 非典型coding
下一篇:微軟 OTS
您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表