深信服 一面 2018 秋招
1.自我介绍
2.计算一个文件的大小
java 方式:
File f= new File("D:\\CentOS-6.5-x86_64-bin-DVD1.iso");
if (f.exists() && f.isFile()){
logger.info(f.length());
}else{
logger.info("file doesn't exist or is not a file");
}
#include "stdafx.h"
#include <stdio.h>
int main()
{
FILE* fp = NULL;
int nFileLen = 0;
fp = fopen("c:/Test.txt", "rb");
if (fp == NULL)
{
cout << "can't open file" << endl;
return 0;
}
fseek(fp,0,SEEK_END); //定位到文件末
nFileLen = ftell(fp); //文件长度
cout << "file len = " << nFileLen << endl;
return 0;
}
3.你这一生写过多少行代码,估算一下
4.安卓进程间通信有几种方式,怎么实现?
我们平时用的Activity,BroadCastReceiver,Service,ContentProvider可以很简单就实现了跨进程通信啊
5.台阶问题(斐波拉切序列变形)
题目:
给定一个有N个台阶的楼梯,一个人从下到上开始跳台阶,这个人有两种跳的方式:一次跳一个台阶,一次跳两个台阶;
问:从台阶底端跳到台阶顶端,有多少种跳台阶的方式?
分析:
首先我们考虑最简单的情况。如果只有1个台阶,那么显然只有一种跳法;如果是2级台阶,那么有2种跳法。对于一个有n级台阶的楼梯来说,我们设跳法为 f(n) ,假如我们先跳1个台阶,则剩下有 n-1 个台阶,跳法为 f(n-1) 次,假如我们先跳2个台阶,则剩下 n-2 阶,跳法为 f(n-2);由此可以推出,对于一个n阶的楼梯,f(n)=f(n-1)+f(n-2)
6.一篇英文文章统计出现次数最多的10个单词,打印出来
我当时想了2种方式
- 记录每个单词出现的次数,再找出最大的10个数
- TreeMap
7.合并ip,有超级多的ip,合并(比如)重合的
比如:
a. 192.168.1.1 - 192.168.1.100
b. 172.152.1.2 - 172.152.5.2
c. 192.168.1.50 - 192.168.1.200
上面的a组可以和c组合并成192.168.1.200
现在给出n组,求合并之后的ip组,并打印