[量化IT工程师面试题]
1、有52个字母字符数组('A'~'z')其中只有一个字符是重复的,请编写一个函数,把这个字母字符找到。
要求:时间复杂度 O(N) ,不能用额外的辅助数组;
示例:
输入: ['A', 'a', 'v', 'a', 's', 'r']
输出:'a'
2、什么是局部性原理? 请用C写一段代码来证明局部性是否存在。
3、在这样的场景下在同一台服务器上一个生产者会定时250ms生产数据,多个消费者消费数据,
请问如何设计才能使多个消费者最快得到生产者的数据(消费者的数目限制在12个以内)。
4、请用shell 实现如下功能:
问题描述:
在名为json文件夹下面有如下json 文件,我们想把这个json文件复制一份, 同时symbol 这一项对应值替换为新值,比如 "y2105"--> "y2109"
示例文件:
algo_config_y2105.json
{
// symbol related
"strategyID": 905,
"symbol": "y2105",
"priceStep": 2,
"noSplitVol": 31,
"needLockPosition": false,
//"onlyUseL1Quote": true,
}
变成:
algo_config_y2109.json
{
// symbol related
"strategyID": 905,
"symbol": "y2109",
"priceStep": 2,
"noSplitVol": 31,
"needLockPosition": false,
//"onlyUseL1Quote": true,
}
5、完成一个查询服务程序。
现在有如下数据:
/home/lj/quote/day/shfe/20210103/shfe_lv2_rb2105_20210103.dat
/home/lj/quote/day/shfe/20210103/shfe_lv2_ru2105_20210103.dat
/home/lj/quote/night/shfe/20210103/shfe_lv2_rb2105_20210103.dat
/home/lj/quote/night/shfe/20210103/shfe_lv2_ru2105_20210103.dat
/home/lj/quote/day/dce/20210103/dce_lv2_i2105_20210103.dat
/home/lj/quote/day/dce/20210103/dce_lv2_jm2105_20210103.dat
我们想基于这些数据做一个查询服务。
当客户端请求如下字段: 合约,日期,日夜盘 (rb2105,20210103,1)
服务端返回:请求对应的文件的路径 (/quote/day/shfe/20210103/shfe_lv2_rb2105_20210103.dat)
备注:
1、日盘为1,夜盘为0
2、不限语言和工具
6、我们有一个提供行情服务进程会把整个交易日的数据都发送给订阅的合约客户端计算信号,某天发现数据客户端计算特别慢,请问我应该定位问题?
7、有如下结构体,在X86/64 系统中,请问test_t 总共占用多少个字节:
typedef struct test {
long len;
double price;
char order_status[2];
short vol;
}test_t;
8、如果recv_min_bar()函数不断收一个结构体为200字节的数据,然后把收到的结构体打印出来,请问这段代码能正常工作吗?
int32_t recv_msg(int32_t socket_fd, char *recv_msg_buff, int32_t max_recv_len)
{
int32_t ret = 0, recv_len = 0;
ret = recv(socket_fd, recv_msg_buff, max_recv_len, 0);
if (ret <= 0) {
printf("[ERROR] %s %d %d \n", __func__, __LINE__, strerror(errno));
return -1;
}
return ret;
}
int32_t recv_min_bar(int32_t socket_fd, minute_bar_t *min_bar)
{
int32_t ret = 0, payload_len = 0;
payload_len = sizeof(minute_bar_t);
ret = recv_msg(socket_fd, (char *)min_bar, payload_len);
if (ret < 0) {
printf("[ERROR] %s %d \n", __func__, __LINE__);
return -1;
}else
printf("%s \n", min_bar->symbol);
return ret;
}