1、明确你的项目到底是做什么的,有哪些功能
广告投放机:项目主要是为移动端有针对性的进行广告展示。
媒体管理平台SSP:为媒体端实现多种变现途径
(1)广告投放机中关于广告检索与排序的功能
1、广告检索使用了布尔表达式的检索
看个倒排索引的实现,如下:
public class InverseIndex<T> extends HashMap<T, List<Integer>> {
private static final long serialVersionUID = 1L;
public void add(Vector<T> doc, int currDocID) { // 加入文档就是加入doc中的关键字
// 遍历document里的所有的term
for (int w = 0; w < doc.size(); w++) {
List<Integer> result = this.get(doc.get(w));
if (result == null) {
this.put(doc.get(w), new ArrayList<Integer>());
}
this.get(doc.get(w)).add(currDocID); // 在倒排索引的末尾插入新的文档
}
}
// 在索引中进行一次查询
public void retrieve(Set<T> query, Set<Integer> docIDs) {
Iterator<T> iterator = query.iterator();
while (iterator.hasNext()) {
T t = iterator.next();
if (this.get(t) != null && this.get(t).size() != 0) {
docIDs.addAll(this.get(t));
}
}
}
}
在对广告进行检索时,倒排索引面临两个问题:
A:广告的定向条件组合可以看成是一个由与与或关系连接的布尔表达式
B:在上下文关键词或者用户标签比较丰富时,广告检索的查询条件可能比较多。
所以使用布尔表达式来完成。主要也分为两步完成,为广告库中的广告建立倒排索引和在索引中查找符合用户画像的广告。
2、排序主要是根据eCPM(千次展示收入) 注意eCPM是千次展示收益,所以是针对媒体来说的
自家的广告优先进行推送,API广告主要看各个API广告平台在某个媒体上收益的eCPM。
(2)广告的反作弊
1、SDK在传输数据时启用数据加密通道,为广告的每一次请求和返回进行加密,并为加密算法添加动态参数。
(3)SSO单点登录系统
使用“单点登录”整合后,只需要登录一次就可以进入多个系统,而不需要重新登录,这不仅仅带来了更好的用户体验,更重要的是降低了安全的风险(第三方系统无需存储密码)和管理的消耗。
(4)广告API定时技术
(5)项目中使用的设计模式
单例 对 double check与内部类实现的单例要掌握
原型模式可以阐述一下对对象的深克隆。主要继承cloneable接口,实现克隆方法:
protected Object clone() throws CloneNotSupportedException {
...
}
参考博文:
(1)http://blog.csdn.net/lifetragedy/article/details/43817903
(2)http://blog.csdn.net/jadyer
2、明确你的项目的整体架构,在面试的时候能够清楚地画给面试官看并且清楚地指出从哪里调用到哪里、使用什么方式调用
3、明确你的模块在整个项目中所处的位置及作用及明确你的模块用到了哪些技术,更好一些的可以再了解一下整个项目用到了哪些技术
4、项目中遇到的难题,怎么解决的?
5、有什么研究深入的技术或比较满意的项目?
说struts2的缓存原理、构造方法的循环依赖注入等