我们做了一个专门面向IT互联网行业程序员的求职笔试面试备考的题库网站
牛客网 http://www.nowcoder.com?from=v2ex
里面积累了谷歌、腾讯、百度等几十家互联网公司的笔试面试题目。但网站当前有部分题目还没有楼主觉得认可的最佳答案和解释,为了更好的服务程序猿们,我们做了一个活动,悬赏大牛解答,每道题目根据难度对应一定的现金奖励,最高一道题目奖励100元,还有iPhone6、移动硬盘、小米手环等众多好礼相送。
从今天开始到1月29日,我们会在论坛持续更新本贴,每天放出1-3道题目,欢迎大家跟帖解答,最先正确解答出来的朋友将会获得话费充值、笔记本等礼物。获奖的朋友名单会在第二天公布。
今日题目
牛客网数据库里有用户在我们网站上的做题记录,每个做题记录包括
1. 题目ID 2.题目知识点列表 3.题目难度 4.做题得分 5.做题时间
我们希望根据用户的做题记录给用户智能出题,智能出题旨在提高用户刷题效率,需要考虑:
1. 难度适中 精确符合用户的知识水平
2. 查漏补缺 精准化刷题
3. 适当扩延 更加全面了解用户知识体系
这个题目相当开放,我们已经实现了第一个版本的算法,下个迭代会更新上线,不知道大家这个需求有什么建设性的想法,欢迎讨论。
更多有奖答题: http://www.nowcoder.com/activity/challenge?from=v2ex
欢迎大家关注我们,活动结束后我们会把面试题整理成PDF分发给参与的用户
微博 http://www.weibo.com/nowcoder
微信 www_nowcoder_com
技术QQ群 157594705
邮件 [email protected]
如果你手里有更多的笔试面试题,也欢迎联系我们,重金求购哦~
昨日答题话费由 @lijinma 斩获。恭喜!
附昨日帖子地址 http://www.v2ex.com/t/159896
附牛客网的敏感词过滤,我们采用了DFA状态机实现,没有语义分析,简单够用
class DFATreeNode {
/**
* true 关键词的终结 ; false 继续
*/
private boolean end = false;
/**
* key下一个字符,value是对应的节点
*/
private Map<Character, DFATreeNode> subNodes = new HashMap<Character, DFATreeNode>();
/**
* 向指定位置添加节点树
*
* @param key
* @param node
*/
public void addSubNode(Character key, DFATreeNode node) {
subNodes.put(key, node);
}
/**
* 获取下个节点
*
* @param key
* @return
*/
public DFATreeNode getSubNode(Character key) {
return subNodes.get(key);
}
public boolean isKeywordEnd() {
return end;
}
public void setKeywordEnd(boolean end) {
this.end = end;
}
public int getSubNodeCount() {
return subNodes.size();
}
}
/**
* 过滤敏感词
*
* @param text
* @return
*/
public String filter(String text) {
if (StringUtils.isBlank(text)) {
return text;
}
String replacement = DEFAULT_REPLACEMENT;
StringBuilder result = new StringBuilder();
DFATreeNode tempNode = rootNode;
int begin = 0; // 回滚数
int position = 0; // 当前比较的位置
while (position < text.length()) {
char c = text.charAt(position);
// 空格直接跳过
if (isSymbol(c)) {
++position;
continue;
}
tempNode = tempNode.getSubNode(c);
// 当前位置的匹配结束
if (tempNode == null) {
// 以begin开始的字符串不存在敏感词
result.append(text.charAt(begin));
// 跳到下一个字符开始测试
position = begin + 1;
begin = position;
// 回到树初始节点
tempNode = rootNode;
} else if (tempNode.isKeywordEnd()) {
// 发现敏感词, 从begin到position的位置用replacement替换掉
result.append(replacement);
position = position + 1;
begin = position;
tempNode = rootNode;
} else {
++position;
}
}
result.append(text.substring(begin));
return result.toString();
}
1
nowcoder OP 牛客网现在采用的是遗传算法来智能出卷,欢迎大家讨论。
|
2
dreampuf 2015-01-08 10:42:00 +08:00
|
3
nowcoder OP @dreampuf 呜呜,求别喷,我们一群做工程的小伙伴写机器学习,苦逼死了。
我们的评估函数定义的比较简单 f = (试卷难-需求难度)*w1 + 错题覆盖率*w2 + 知识点覆盖率*w3 + ... 然后w1,w2,w3等系数根据实际情况自己调出来。 特征就难度,分数等(手工标注+用户数据动态调整)。 不求最优解,只求收敛到目标值就可以了,一般迭代20-40轮可以获得一个符合要求的试卷。 求指点,求简单做法。 |
4
shoumu 2015-01-08 13:35:41 +08:00
用户的个性化数据包含哪些?
|
5
imn1 2015-01-08 13:37:00 +08:00
置顶啊,真好
也准备写个问卷系统,不过没你们那么高大上还用了C,不会 而且侧重方向不同,倾向于调查,所以没题库,进来纯学习,嘿嘿 |
6
nowcoder OP |
7
xunyu 2015-01-08 14:00:40 +08:00
遗传算法用在哪里?我看到只是线性回归而已?
|
8
nowcoder OP @xunyu 随机出题构造试卷。 试卷评估和目标值做对比,进行交叉遗传,迭代20轮的结果就是目标试卷。
这个迭代过程用了遗传算法。 |
9
xunyu 2015-01-08 14:23:35 +08:00
遗传算法这个不是必须的,关键是你的特征提取和分类(聚类)效果,默认评估模型应该符合高斯分布吧,线性回归这个有坑,lr都好点
|
11
nowcoder OP @dreampuf 预计两周后发布,你可以先试用我们的产品 http://www.nowcoder.com 多谢支持哈。
|