1.有过什么实习经历啊?
1.1安天实验室
在哈尔滨安天实验室,我在CERT组实习,跟过两个大神,一个是胡哥,部门技术经理,在异常分析方面很犀利。一个是swordlea,对李哥的印象就是C++大神,同时他也是CERT老大。当时的项目是做一个whois的查询插件,VC++编写。当然的组件功能是输入一个IP地址,能够查询出它的whois信息,因为有点久了,当时也是借鉴网上代码写出来的,自己的代码找不到了(当然怎么就没备份呢),就拿网上的代码凑合一下:
/*
* @brief
* Whois client program
*
* @details
* This program shall fetch whois data for a IPv4 address.
*
* @author Silver Moon ( m00n.silv3r@gmail.com )
* */
#include<stdio.h> //scanf , printf
#include<string.h> //strtok
#include<stdlib.h> //realloc
#include<sys/socket.h> //socket
#include<netinet/in.h> //sockaddr_in
#include<arpa/inet.h> //getsockname
#include<netdb.h> //hostent
#include<unistd.h> //close
int main(int argc , char *argv[])
{
char ip[100] , *data = NULL;
printf("Enter ip address to whois : ");
scanf("%s" , ip);
get_whois(ip , &data);
printf("\n\n");
puts(data);
free(data);
return 0;
}
/**
Get the whois content of an ip
by Selecting the correct server
*/
void get_whois(char *ip , char **data)
{
char *wch = NULL, *pch , *response = NULL;
if(whois_query("whois.iana.org" , ip , &response))
{
printf("Whois query failed");
}
pch = strtok(response , "\n");
while(pch != NULL)
{
//Check if whois line
wch = strstr(pch , "whois.");
if(wch != NULL)
{
break;
}
//Next line please
pch = strtok(NULL , "\n");
}
if(wch != NULL)
{
printf("\nWhois server is : %s" , wch);
whois_query(wch , ip , data);
}
else
{
*data = malloc(100);
strcpy(*data , "No whois data");
}
return;
}
/*
* Perform a whois query to a server an d record the response
* */
int whois_query(char *server , char *query , char **response)
{
char ip[32] , message[100] , buffer[1500];
int sock , read_size , total_size = 0;
struct sockaddr_in dest;
sock = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP);
//Prepare connection structures :)
memset( &dest , 0 , sizeof(dest) );
dest.sin_family = AF_INET;
printf("\nResolving %s..." , server);
if(hostname_to_ip(server , ip))
{
printf("Failed");
return 1;
}
printf("%s" , ip);
dest.sin_addr.s_addr = inet_addr( ip );
dest.sin_port = htons( 43 );
//Now connect to remote server
if(connect( sock , (const struct sockaddr*) &dest , sizeof(dest) ) < 0)
{
perror("connect failed");
}
//Now send some data or message
printf("\nQuerying for ... %s ..." , query);
sprintf(message , "%s\r\n" , query);
if( send(sock , message , strlen(message) , 0) < 0)
{
perror("send failed");
}
//Now receive the response
while( (read_size = recv(sock , buffer , sizeof(buffer) , 0) ) )
{
*response = realloc(*response , read_size + total_size);
if(*response == NULL)
{
printf("realloc failed");
}
memcpy(*response + total_size , buffer , read_size);
total_size += read_size;
}
printf("Done");
fflush(stdout);
*response = realloc(*response , total_size + 1);
*(*response + total_size) = ”\ ”;
close(sock);
return 0;
}
/*
* @brief
* Get the ip address of a given hostname
*
* */
int hostname_to_ip(char * hostname , char* ip)
{
struct hostent *he;
struct in_addr **addr_list;
int i;
if ( (he = gethostbyname( hostname ) ) == NULL)
{
// get the host info
herror("gethostbyname");
return 1;
}
addr_list = (struct in_addr **) he->h_addr_list;
for(i = 0; addr_list[i] != NULL; i++)
{
//Return the first one;
strcpy(ip , inet_ntoa(*addr_list[i]) );
return 0;
}
return 0;
}
1.2 大连东软
当然有个项目是《PC车载导航系统》,我在里面负责一些琐碎的东西,算法方面我举个例子吧,地图导航不都是要选个最近的一条路走吗?
关于这条最近的道路选法,具体是用一个迪杰斯特拉算法来实现的:
function Dijkstra(G, w, s)
for each vertex v in V[G] // 初始化
d[v] = 无穷大
previous[v] = NULL
d[s] = 0
S = empty set
Q = set of all vertices
while Q is not an empty set // Dijstra演算法主體
u = Extract_Min(Q)
S = S union {u}
for each edge (u,v) outgoing from u
if d[v] > d[u] + w(u,v) // 拓展邊(u,v)
d[v] = d[u] + w(u,v)
previous[v] = u
1.3 哈尔滨实习
这里项目是涉密了,不过我的工作主要是完成上级交代的任务,有开发小工具,也有实时的任务。
2.QA 哪一点吸引你?
其实看到这里我懵了,因为上过刘老师的SQA课程,我第一反应是不是他想说:SQA哪一点吸引你?
后来百度才发现,两者完全两码事:
From CSDN:
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
QA是质量保证,主要是做测试工作。
SQA是软件质量保证,决不是测试,而是监督软件过程是否符合公司的规程。
SQA独立于开发组,向公司的上层报告,而不是仅仅是向项目经理报告。
还有SQA还负责收集软件开发过程中的数据,进行收集和分析。
我个人有些许感悟:
1. 因为在周围人眼中还算技术可以,他们出什么问题我能帮的都帮,主要就是帮他们,debug之类的,虽然不是测试,但是找出错误,也不是QA的一种吗?
2.测试比开发眼界广。
软件测试从综合素质,知识结构等角度来看,要求比软件开发要更全面。
这也直接导致了:软件测试的职业发展路线要广于软件开发!
在测试技术领域:
测试执行工程师
测试设计工程师
测试系统工程师
测试架构工程师
测试专家。
在管理的领域:
普通测试工程师
测试项目经理
测试主管
测试经理
测试总监
大部门测试总监。
而且还能走外围IT职业:
行业测试专家,
金融领域测试专家
项目管理
软件测试咨询与培训等
软件质量保证(SQA)
软件销售
技术支持等。
3.测试还能和安全挂点勾,让我不至于被安全圈子的小伙伴遗忘。。
3.你用过什么测试工具?
用过autoRunner。记得当初的任务是写一个枪支管理系统,然后对这个系统进行测试。写这系统还是自学了PHP,从无到有,从小到大开发出来的。
用autoRunner测试,登录用户,让它登录注销,登录注销,10000次,看是不是有问题。
录制脚本,然后它会自动化生成脚本代码,然后稍微改改,比如,for i1 到10的话,把10改成10000,就成了压力测试了。
4.百度搜索,大概流程是什么?
点击“百度一下”的那一瞬间发生了什么呢?
搜索建议
同义词匹配与你的搜索关键词语义相近的查询结果
生成初步结果,说是1000万条,其实就显示1000条。
然后进行优化:rank排序,去重,加广告
点击之前呢?
我对搜索引擎是怎么搜集并整合信息有看过相关文献:
1.网友上传内容,比如博客,微博等WEB内容被更新到互联网
2.google爬虫发现了这一更新。把信息收录。
3.信息之后的加工处理,一是信息素材的存储,二是收录信息按要求进行优化。
4.基于URL评估域名 和 网页的总体权威性。
5.检测网页作弊行为。
6.分页页面后,每个页面会附加很多辅助用户搜索的数据片。
当时可能是在知乎还是CSDN上看到的,忘了,印象深的是:如何优化:
把专题性垂直搜索结果加入到查询结果中
例如新闻,文库,音乐,知道吧。
用户访问过的网站,会在查询结果中更靠前
使用大量超链接(锚点)的网页有可能被删除
如果网页被其他高rank的网站引用,它重要性也会提高
如果搜索词是当下搜索流量暴增的关键词,rank值会增加
广告方面,这是自己想到的:
1.当地的广告
2.符合法律条文的广告
3.广告费多的广告靠前
4.点击率本身就高的广告靠前
参照谷歌,怎么反作弊:
搜索质量和反垃圾信息审查机制
(就是一个网页中有很多重复的关键字,或者很多锚点,明显就是骗爬虫的吗)
把举报的信息搜集起来:征集用户对rank有讹诈嫌疑的垃圾信息进行举报
把用户评价搜集起来:全球征集志愿者,作为一个远程测试用户来评价搜索结果的质量
DMCA法!去除盗版内容。
5.简单说下信息检索模型。
可恨,选修课,当初没选这门课,选《计算机安全》去了。
D: 文档集的机内表示
Q: 用户需求的机内表示
F: 文档表示、查询表示和它们之间的关系的模型框架(Frame)
R(qi, dj): 排序函数,给query qi 和document dj评分
这个真心不懂,没研究过。
6.分布式文件系统
这个真心不懂。。
网盘是吗?
但虽然我不懂,在安全方面还是稍等一些:
安全的三要素:
机密性
完整性
可用性
安全机制:
加密:DES,RSA
身份认证:login
授权:授予实体执行所请求操作的权限
审计;追踪实体的访问内容和访问行为
冗余:提供可用性
安全层次:
安全通道:身份认证,消息完整性和机密性(HTTPS?)
访问控制:访问授权(不是每个人都能访问你的QQ空间),防火墙(非校园网用户不在规则里面)
安全管理;密钥管理(密码忘记?),授权管理(能否授予权利和剥夺权利?)
7.百度产品
搜索与导航 : 网页 视频搜索 MP3 地图 新闻 图片 词典 常用搜索 hao123 文档搜索 网站导航
搜索社区:知道 百科 贴吧 空间 文库 音乐掌门人 搜藏 经验 百度身边
移动互联网 :移动搜索 掌上百度 手机输入法 百度快搜 手机百度地图
网站与企业服务 : 搜索开放平台 站长平台 百度统计 百度联盟 百度推广 广告管家 资料研究中心
百度应用:购物、线上娱乐 、 百度游戏 娱乐 游戏大厅 百付宝 百度Hi 百度工具栏
软件:千千静听 软体搜索 百度输入法 百度流览伴侣 百度电脑管家
百度公益: 老年搜索 盲道 大学搜索 博客搜索 法律搜索 国学 图书搜索 专利搜索 百度CSR 识图
百度旗下:奇艺 百度乐居 天空软体 乐酷天日本商城
8.爱好
打篮球和打LOL。
9.职业规划
要能在1年内学会公司的主流测试方法和掌握主流测试工具,成为一个合格的测试工程师。
之后,3年,能成为我们小组的主要人物吧,能高效解决大部分问题。
5年成为一个测试项目经理。