Java面试06|项目相关介绍

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在传输数据时启用数据加密通道,为广告的每一次请求和返回进行加密,并为加密算法添加动态参数。

2、时差防护策略  移动广告作弊过程通常发生在点击、下载、激活三个步骤中,正常来说每个步骤都会有其对应的时间。一般作弊时,伪造点击与激活是并存的,他不管谁先谁后,碰上就算,所以往往在时间逻辑上是错误的。例如激活时间早于点击时间或者时间差过短等。为广告制定基于异常时差防护策略,设置异常时差范围,在分析点击和激活的时差后,校验时差设定范围,将激活转化过快的设备归为异常。 

注意,还是下载比点击先上报,或者激活比下载先到就是错误的。因为SDK可能发两个独立的上报请求,所以老板娘设定时差的范围。

3、更多的信息验证  如验证设备的信息是否存在(SDK一般初始化时会上报设备相关信息)

4、提供基于异常IP段防护策略,超过设定的IP数的峰值范围的数据,将会被防作弊功能自动过滤,通过调取大量的作弊日志发现,某个时段内,点击或者激活的IP过于集中是数据异常的常见表象,广告技术系统会设定在一定的时间内IP数的峰值,超过设定的范围内,将会被归为异常数据。 

(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的缓存原理、构造方法的循环依赖注入等

时间: 2024-08-29 04:08:33

Java面试06|项目相关介绍的相关文章

Java面试01|JVM相关

1.JVM内存查看与分析,编写内存泄露实例 堆区.栈区.方法区.本机内存都有可能内存溢出.在这里编写堆区内存溢出实例.如下(来自<深入理解Java虚拟机>一书. // -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError public class HeapOutOfMemoryError { static class OOMObject{} public static void main(String[] args) { List<OOMObje

java ee期末项目相关

1.项目简介 本项目是对纸杯生产进行管理的的一个系统,从前端接收到订单,然后根据订单内容进行纸杯的生产.如下为该系统的总流程图: 1.项目系统架构图 3.系统用例图 4.ER图 主要的代码和相关文件见github:https://github.com/ouhaitao/factoryManger 原文地址:https://www.cnblogs.com/yyxxn/p/9248813.html

package、import、java及javac的相关介绍(转)

Package: package中所存放的文件 所有文件,不过一般分一下就分这三种 1.java程序源文件,扩展名为.java: 2.编译好的java类文件,扩展名为.class: 3.其他文件,也称为resource: 例如图片文件,xml文件,mp3文件,avi文件,文本文件…… package是什么 package好比java用来组织文件的一种虚拟文件系统,某些作用类似于OS中的文件夹. package把源代码.java文件,.class文件和其他文件有条理的进行组织,以供java来使用.

Java面试10|数据库相关

1.ID分配单点问题 系统使用一张表的自增来得到订单号,所有的订单生成必须先在这里insert一条数据,得到订单号.分库后,库的数量变多,相应的故障次数变多,但由于单点的存在,故障影响范围并未相应的减少,使得全年downtime上升,可用性下降. 针对ID分配单点问题,考虑到数据库表分配性能的不足,调研了Tair.Redis.Snowflake等ID分配器,同时也考虑过将ID区间分段,多点分配. 但最后没有使用这些方案,主要原因是ID分配对系统而言是强依赖服务,在分布式系统中,增加这样一个服务,

java程序员面试交流项目经验

粘贴自:https://blog.csdn.net/wangyuxuan_java/article/details/8778211 1:请你介绍一下你自己 这是面试官常问的问题.一般人回答这个问题过于平常,只说姓名.爱好.工作经验,这些简历上都有.其实,面试官最希望知道的是求职者能否胜任工作,包括:最强的技能.最深入研究的知识领域.个性中最积极的部分等. 2:说说你的家庭 面试时询问家庭问题不是非要知道求职者家庭情况,探究隐私,而是要了解家庭背景对求职者的塑造和影响.面试官希望听到的重点也在于家

java面试(2)--大数据相关

第一部分.十道海量数据处理面试题 1.海量日志数据,提取出某日访问百度次数最多的那个IP. 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中.注意到IP是32位的,最多有个2^32个IP.同样可以采用映射的方法, 比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大 的几个)及相应的频率.然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求. 或者如下阐述(雪域之鹰)

Java 集合系列 06 Stack详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java 集合系列 05 Vector详细介绍(源码解析)和使用示例 Java 集合系列 06 Stack详细介绍(源码解析)和使用示例 第1部分 Stack介绍 Stack简介 Stack是栈.它的特性是:先进后出(FILO, F

[Java面试一]面试复习大纲.

一.Java基础部分 (搞定所有技术之后才考虑复习的技术点) 1.数组中的排序问题(笔试或者机试,前者可能性更大) 2.面向对象的理解 3.集合相关的问题,比如hashmap跟hashtable的区别.搞清楚每个集合对象的特性就欧了. 4.多线程启动方式,以及产生死锁的原因和解决办法[多线程问题不是很常问,有精力就复习这块内容] 5.IO流,了解常见的几个流对象以及基本的流操作即可,被机试的可能性比较小. 二.Web基础 (1年工作经验者需要重点复习的技术点) 1.http协议(定义.常见的请求

Java面试大全.绝对经典&lt;96-125&gt;&lt;转&gt;

96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet. 补充:Sun Microsystems公司在1996年发布Servlet技术就是为了和CGI进行竞争,Servlet是一个特殊的Java程序,一个基于Java的Web应用通常包含一个或多个Servlet类.S