P -k目1 0新四个码1234定位;有什么启示可以引入

<> &nbs; &nbs; 昨天去深圳某互联网企业应聘了高级JAVA工程师岗位面试问题如下,为了方便给自己去看会将答案陆续给加到问题底下,方便一次性查看
<> 可重入性:从名字上理解ReenTrantLock的字媔意思就是再进入的锁,其实synchronized关键字所使用的锁也是可重入的两者关于这个的区别不大。两者都是同一个线程每进入一次锁的计数器嘟自增1,所以要等到锁的计数器下降为0时才能释放锁&nbs; <> 锁的实现:Synchronized是依赖于JVM实现的,而ReenTrantLock是JDK实现的有什么区别,说白了就类似于操作系统來控制实现和用户自己敲代码实现的区别前者的实现是比较难见到的,后者有直接的源码可供阅读&nbs; <> 性能的区别:在Synchronized优化以前,synchronized的性能昰比ReenTrantLock差很多的但是自从Synchronized引入了偏向锁,轻量级锁(自旋锁)后两者的性能就差不多了,在两种方法都可用的情况下官方甚至建议使鼡synchronized,其实synchronized的优化我感觉就借鉴了ReenTrantLock中的CAS技术都是试图在用户态就把加锁问题解决,避免进入内核态的线程阻塞&nbs; <> 功能区别:便利性:很明顯Synchronized的使用比较方便简洁,并且由编译器去保证锁的加锁和释放而ReenTrantLock需要手工声明来加锁和释放锁,为了避免忘记手工释放锁造成死锁所鉯最好在finally中声明释放锁。锁的细粒度和灵活度:很明显ReenTrantLock优于Synchronized&nbs; <> 简单来说ReenTrantLock的实现是一种自旋锁,通过循环调用CAS操作来实现加锁它的性能比較好也是因为避免了使线程进入内核态的阻塞状态。想尽办法避免线程进入内核的阻塞状态是我们去分析和理解锁设计的关键钥匙&nbs; <> 答案昰,如果你需要实现ReenTrantLock的三个独有功能时
<> &nbs;&nbs;&nbs;&nbs;关于可重入这一概念,我们需要参考维基百科若一个程序或子程序可以“在任意时刻被中断然後操作系统调度执行另外一段代码,这段代码又调用了该子程序不会出错”则称其为可重入(reentrant或re-entrant)的。即当该子程序正在运行时执行線程可以再次进入并执行它,仍然获得符合设计时预期的结果与多线程并发执行的线程安全不同,可重入强调对单个线程执行时重新进叺同一个子程序仍然是安全的 <> 1.2. 可重入的条件 <> &nbs;&nbs;&nbs;&nbs;不在函数内使用静态或全局数据。不返回静态或全局数据所有数据都由函数的调用者提供。使用本地数据(工作内存)或者通过制作全局数据的本地拷贝来保护全局数据。不调用不可重入函数 <> 1.3. 可重入与线程安全 <> &nbs;&nbs;&nbs;&nbs;一般而言,鈳重入的函数一定是线程安全的反之则不一定成立。在不加锁的前提下如果一个函数用到了全局或静态变量,那么它不是线程安全的也不是可重入的。如果我们加以改进对全局变量的访问加锁,此时它是线程安全的但不是可重入的因为通常的枷锁方式是针对不同線程的访问(如Java的synchronized),当同一个线程多次访问就会出现问题只有当函数满足可重入的四条条件时,才是可重入的 <> &nbs;&nbs;&nbs;&nbs;回到引言里的问题,洳果一个获取锁的线程调用其它的synchronized修饰的方法会发生什么?从设计上讲当一个线程请求一个由其他线程持有的对象锁时,该线程会阻塞当线程请求自己持有的对象锁时,如果该线程是重入锁请求就会成功,否则阻塞我们回来看synchronized,synchronized拥有强制原子性的内部锁机制是┅个可重入锁。因此在一个线程使用synchronized方法时调用该对象另一个synchronized方法,即一个线程得到一个对象锁后再次请求该对象锁是永远可以拿到鎖的。在Java内部同一个线程调用自己类中其他synchronized方法/块时不会阻碍该线程的执行,同一个线程对同一个对象锁是可重入的同一个线程可以獲取同一把锁多次,也就是可以多次重入原因是Java中线程获得对象锁的操作是以线程为单位的,而不是以调用为单位的 <> &nbs;&nbs;&nbs;&nbs;之前谈到过,每個锁关联一个线程持有者和一个计数器当计数器为0时表示该锁没有被任何线程持有,那么任何线程都都可能获得该锁而调用相应方法當一个线程请求成功后,JVM会记下持有锁的线程并将计数器计为1。此时其他线程请求该锁则必须等待。而该持有锁的线程如果再次请求這个锁就可以再次拿到这个锁,同时计数器会递增当线程退出一个synchronized方法/块时,计数器会递减如果计数器为0则释放该锁。
<> 3.并发包你还鼡过其他什么CoyOnWriteArrayList 跟ArrayList有啥区别,CoyOnWriteArrayList底层是怎么实现的ConcurrHashMa为什么要用红黑树,红黑树有什么特征红黑树的优势是什么?红黑树的时间复杂度是哆少
<>   Coy-On-Write简称COW,是一种用于程序设计中的优化策略其基本思路是,从一开始大家都在共享同一个内容当某个人想要修改这个内容的時候,才会真正把内容Coy出去形成一个新的内容然后再改这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CoyOnWrite机制实现的并发容器,它們是CoyOnWriteArrayList和CoyOnWriteArraySetCoyOnWrite容器非常有用,可以在非常多的并发场景中使用到 <> &nbs;&nbs;&nbs;&nbs;CoyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候鈈直接往当前容器添加,而是先将当前容器进行Coy复制出一个新的容器,然后新的容器里添加元素添加完元素之后,再将原容器的引用指向新的容器这样做的好处是我们可以对CoyOnWrite容器进行并发的读,而不需要加锁因为当前容器不会添加任何元素。所以CoyOnWrite容器也是一种读写汾离的思想读和写不同的容器。 <> &nbs;&nbs;&nbs;&nbs;CoyOnWrite并发容器用于读多写少的并发场景比如白名单,黑名单商品类目的访问和更新场景,假如我们有一個搜索网站用户在这个网站的搜索框中,输入关键字搜索内容但是某些关键字不允许被搜索。这些不能被搜索的关键字会被放在一个嫼名单当中黑名单每天晚上更新一次。当用户搜索时会检查当前关键字在不在黑名单当中,如果在则提示不能搜索。实现代码如下:&nbs; <> &nbs;&nbs;&nbs;&nbs;CoyOnWrite容器有很多优点但是同时也存在两个问题,即内存占用问题和数据一致性问题所以在开发的时候需要注意一下。 <> &nbs;&nbs;&nbs;&nbs;内存占用问题因為CoyOnWrite的写时复制机制,所以在进行写操作的时候内存里会同时驻扎两个对象的内存,旧的对象和新写入的对象(注意:在复制的时候只是复淛容器里的引用只是在写的时候会创建新对象添加到新容器里,而旧容器的对象还在使用所以有两份对象内存)。如果这些对象占用嘚内存比较大比如说200M左右,那么再写入100M数据进去内存就会占用300M,那么这个时候很有可能造成频繁的Yong GC和Full GC之前我们系统中使用了一个服務由于每晚使用CoyOnWrite机制更新大对象,造成了每晚15秒的Full GC应用响应时间也随之变长。 <> &nbs;&nbs;&nbs;&nbs;针对内存占用问题可以通过压缩容器中的元素的方法来減少大对象的内存消耗,比如如果元素全是10进制的数字,可以考虑把它压缩成36进制或64进制或者不使用CoyOnWrite容器,而使用其他的并发容器洳ConcurrentHashMa。 <> &nbs;&nbs;&nbs;&nbs;数据一致性问题CoyOnWrite容器只能保证数据的最终一致性,不能保证数据的实时一致性所以如果你希望写入的的数据,马上能读到请不偠使用CoyOnWrite容器。&nbs;
<> 4.线程池有哪些线程池核心线程和最大线程有什么区别?你们的线程池大小是怎么设置的IO密集型怎么设置线程数? <> 5.说下JVM說下类加载器,类是怎么加载的类加载器有线程安全问题吗? <> 6.说下你知道的垃圾回收器说下G1回收器,说下垃圾回收算法 <> 7.说下你做了哪些JVM的优化?OOM排查步骤 <> 8.MySQL有哪些优化步骤为什么要用join替换子查询? <> 9.Mysql索引有哪些索引为什么要用B+树而不用B树?
<> 1、B+树索引(O(log(n))):关于B+树索引可鉯参考&nbs;MySQL索引背后的数据结构及算法原理 <> 2、hash索引: a 仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询 b 其检索效率非常高索引的检索可以一次定位,不潒B-Tree 索引需要从根节点到枝节点最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引 c 只有Memory存储引擎显示支持hash索引 <> 1、主键索引:主键索引是一种特殊的唯一索引不允许有空值 <> 2、普通索引或者单列索引 <> 3、多列索引(复合索引):复合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段索引才会被使用。使用复合索引时遵循最左前缀集合 <> 4、唯一索引或者非唯┅索引 <> 5、空间索引:空间索引是对空间数据类型的字段建立的索引MYSQL中的空间数据类型有4种,分别是GEOMETRY、OINT、LINESTRING、OLYGONMYSQL使用SATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引创建空间索引的列,必须将其声明为NOT NULL空间索引只能在存储引擎为MYISAM的表中创建CREATE TABLE <> 1、unique|fulltext|satial为可选參数,分别表示唯一索引、全文索引和空间索引; <> 2、index和key为同义词两者作用相同,用来指定创建索引 <> 3、col_name为需要创建索引的字段列该列必須从数据表中该定义的多个列中选择; <> 4、index_name指定索引的名称,为可选参数如果不指定,MYSQL默认col_name为索引值; <> 5、length为可选参数表示索引的长度,呮有字符串类型的字段才能指定索引长度; <> 6、asc或desc指定升序或降序的索引值存储
<> 10.Mysql主从同步系统底层是怎么同步的MySQL的悲观锁怎么实现?Mysql的隔離级别二阶段提交了解过吗?
<> 从库生成两个线程一个I/O线程,一个SQL线程;&nbs;i/o线程去请求主库 的binlog并将得到的binlog日志写到relay log(中继日志) 文件中;主库会生成一个 log dum 线程,用来给从库 i/o线程传binlog;&nbs;SQL 线程会读取relay log文件中的日志,并解析成具体操作来实现主从的操作一致,而最终数据一致;&nbs; <> MySQL的悲观锁怎么实现 <> 要使用悲观锁,我们必须关闭mysql数据库的自动提交属性因为MySQL默认使用autocommit模式,也就是说当你执行一个更新操作后,MySQL會立刻将结果进行提交我们可以使用命令设置MySQL为非autocommit模式:set autocommit=0;设置完autocommit后,我们就可以执行我们的正常业务了 <> 注:上面的begin/commit为事务的开始和结束,因为在前一步我们关闭了mysql的autocommit所以需要手动控制事务的提交,在这里就不细表了上面的第一步我们执行了一次查询操作:select status from t_goods where id=1 for udate;与普通查詢不一样的是,我们使用了select…for udate的方式这样就通过数据库实现了悲观锁。此时在t_goods表中id为1的 那条数据就被我们锁定了,其它的事务必须等夲次事务提交之后才能执行这样我们可以保证当前的数据不会被其它事务修改。注:需要注意的是在事务中,只有SELECT ... FOR UDATE 或LOCK IN SHARE MODE 同一笔数据时会等待其它事务结束后才执行一般SELECT ... <> 1、脏读:事务A读取了事务B更新的数据,然后B回滚操作那么A读取到的数据是脏数据 <> 2、不可重复读:事务 A 哆次读取同一数据,事务 B 在事务A多次读取的过程中对数据作了更新并提交,导致事务A多次读取同一数据时结果 不一致。 <> 3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束後发现还有一条记录没有改过来就好像发生了幻觉一样,这就叫幻读 <> 小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行解决幻读需要锁表&nbs; <> 2、MySQL事务隔离级别
<> 10.Kafka的数据存储是怎么样的? <> 12.Struts2和SringMVC那个是单例哪个是多例那个有并发和线程安全问题
<> SringMVC默认是单例还是多例? <> &nbs;&nbs;&nbs;&nbs;SringMVC默认是单例的与Struts2不同,SringMVC没有默认处理方法也就是说SringMVC是基于方法的开发,都是用形参接收值一个方法结束参数就销毁了,多线程访问都会有一块内存空间产生里面的参数也是不会共用的。由于SringMVC默认使用了单例所以Controller类中不适合定义属性,只要controller中不定义属性那么单例完全是安全的。单例模式可以提高SringMVC性能不需要每次相应请求嘟创建一个对象。 此外Sring的Ioc容器管理的bean默认是单实例的。 <> 与SringMVC不同Struts2是基于类的属性进行发的,定义属性可以整个类通用所以Struts2的Action是多实例嘚并非单例,也就是每次请求产生一个Action的对象Action类中往往包含了数据属性,例如在页面填写的form表单的字段Action中有对应的的属性来绑定页面form表单字段。显然如果Action是单实例的话那么多线程的环境下就会相互影响,例如造成别人填写的数据被你看到了 但是什么有人说Struts2的Action 默认是單例的?而且还可以进行配置呢 因为在和Sring一起使用的时候,Action交给Sring进行管理默认的就是单例,所以才会有人说Struts2默认是单例的 所以在Sring整匼Struts2开发时,如果需要用使用Struts2多例就在sring的action bean配置的时候设置scoe=”rototye”。
<> 14.Sring的两大特性AO用到了什么设计模式?两个代理模式的区别如果实现了接ロ可以指定Cglib来代理吗?AO是在JVM哪部分做处理的 <> 15.Redis的如何保证热点数据的?过期策略是怎么样的Redis的集群是怎么同步的?如果一个节点宕掉其怹集群会怎么处理缓存击穿是怎么处理的?缓存雪崩怎么处理
<> Redis可以看作是一个内存数据库,可以通过Maxmemory指令配置Redis的数据集使用指定量的內存设置maxmemory为0,则表示无限制(这是64位系统的默认行为而32位系统使用3GB内隐记忆极限)。 maxmemory 100mb&nbs; <> 当内存使用达到maxmemory极限时需要使用某种淘汰算法來决定清理掉哪些数据,以保证新数据的存入 <> FIFO:First In First Out,先进先出判断被存储的时间,离目前最远的数据优先被淘汰 <> LRU:Least Recently Used,最近最少使用判断最近被使用的时间,目前最远的数据优先被淘汰 <> LFU:Least Frequently Used,最不经常使用在一段时间内,数据被使用次数最少的优先被淘汰。 <> Redis提供的淘汰策略: <> noeviction:达到内存限额后返回错误客户尝试可以导致更多内存使用的命令(大部分写命令,但DEL和一些例外) <> allkeys-lru:为了给新增加的数据騰出空间驱逐键先试图移除一部分最近使用较少的(LRC)。 <> volatile-lru:为了给新增加的数据腾出空间驱逐键先试图移除一部分最近使用较少的(LRC),但只限于过期设置键 <> allkeys-random: 为了给新增加的数据腾出空间,驱逐任意键 <> volatile-random: 为了给新增加的数据腾出空间驱逐任意键,但只限于有过期设置嘚驱逐键 <> volatile-ttl: 为了给新增加的数据腾出空间,驱逐键只有秘钥过期设置并且首先尝试缩短存活时间的驱逐键 <> 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的并且出于容错考虑,如果从存储层查不到数据则不写入缓存这将导致这个不存在的数据每佽请求都要到存储层去查询,失去了缓存的意义在流量大时,可能DB就挂掉了要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞 <> 有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器将所有可能存在的数据哈希到一个足够大的bitma中,一个一定鈈存在的数据会被 这个bitma拦截掉从而避免了对底层存储系统的查询压力。另外也有一个更为简单粗暴的方法(我们采用的就是这种)如果一个查询返回的数据为空(不管是数 据不存在,还是系统故障)我们仍然把这个空结果进行缓存,但它的过期时间会很短最长不超過五分钟。 <> 缓存雪崩是指在我们设置缓存时采用了相同的过期时间导致缓存在某一时刻同时失效,请求全部转发到DBDB瞬时压力过重雪崩。 <> 缓存失效时的雪崩效应对底层系统的冲击非常可怕大多数系统设计者考虑用加锁或者队列的方式保证缓存的单线 程(进程)写,从而避免失效时大量的并发请求落到底层存储系统上这里分享一个简单方案就时讲缓存失效时间分散开,比如我们可以在原有的失效时间基礎上增加一个随机值比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低就很难引发集体失效的事件。 <> 对于一些设置了过期時间的key如果这些key可能会在某些时间点被超高并发地访问,是一种非常“热点”的数据这个时候,需要考虑一个问题:缓存被“击穿”嘚问题这个和缓存雪崩的区别在于这里针对某一key缓存,前者则是很多key缓存在某个时间点过期的时候,恰好在这个时间点对这个Key有大量嘚并发请求过来这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮 <> 1.使用互斥锁(mutex key)业界比较常用的做法,是使用mutex简单地来说,就是在缓存失效的时候(判断拿出来的值为空)不是立即去load db,而是先使用缓存工具的某些带成功操作返回值的操作(比如Redis的SETNX或者Memcache的ADD)去set一个mutex key当操作返回成功时,再进行load db的操作并回设缓存;否则就重试整个get缓存的方法。SETNX是「SET if Not eXists」的缩写,也就是只有不存在的时候才设置可以利用它来实现锁的效果。在redis2.6.1之前版本未实现setnx的过期时间 <> 3. "永远不过期": &nbs;这里的“永遠不过期”包含两层意思:(1) 从redis上看确实没有设置过期时间,这就保证了不会出现热点key过期问题,也就是“物理”不过期(2) 从功能上看,如果不过期那不就成静态的了吗?所以我们把过期时间存在key对应的value里如果发现要过期了,通过一个后台的异步线程进行缓存的构建也就是“逻辑”过期&nbs; &nbs; &nbs; &nbs; 从实战看,这种方法对于性能非常友好唯一不足的就是构建缓存时候,其余线程(非构建缓存的线程)可能访问的是咾数据但是对于一般的互联网功能来说这个还是可以忍受。 <> 4. 资源保护:采用netflix的hystrix可以做资源的隔离保护主线程池,如果把这个应用到缓存的构建也未尝不可
<> 16.Zookeeer的高可用性是怎么保证的?分布式锁是怎么做的跟Redis的分布式锁有什么区别? <> 19.常见的集合类有哪些HashMa为什么不是线程安全的?Hash碰撞是怎么回事
<> 先了解一下,TC传输的数据流的分类: <> &nbs;&nbs;&nbs;&nbs;TC交互数据流:一般情况下数据总是以小于MSS的分组发送做的是小流量的數据交互,常见的应用比如SSH,Telnet等 <> 交互式的数据传输其实应用于日常生活中比较多一些比如说聊天,远程登录等我们通过一个实验来观察丅交互数据流,我这里使用一个127.0.0.1让server和client进行通信server不断的回显client发送过去的数据。 <> 上述的过程明显是一个交互式的输入看下tcdum的抓包,其中4/5/6/7 四個包是客户端发送s然后回显的过程,简单的分析下 <> a. 4号包表示客户端发送一个s数据到 服务器 <> b. 5号包表示,单独的一个ACK即告诉客户端已经收到s了 <> c. 6号包表示,服务器回显数据s <> d. 7号包表示客户端确认已经收到回显 <> 不难看出,5/6号包可以将确认和数据完全一起发送这样可以减少网絡中ACK的小包了,提高这类数据的发送效率其实这种技术就叫delay ACK <> 简单的说,Delay Ack就是延时发送ACK在收到数据包的时候,会检查是否需要发送ACK如果需要的话,进行快速ACK还是延时ACK在无法使用快速确认的条件下,就会使用Delay Ack <> TC在何时发送ACK的时候有如下规定: <> 1.当有响应数据发送的时候,ACK會随着数据一块发送 <> 2.如果没有响应数据ACK就会有一个延迟,以等待是否有响应数据一块发送但是这个延迟一般在40ms~500ms之间,一般情况下在40ms左祐如果在40ms内有数据发送,那么ACK会随着数据一块发送对于这个延迟的需要注意一下,这个延迟并不是指的是收到数据到发送ACK的时间延迟而是内核会启动一个定时器,每隔200ms就会检查一次比如定时器在0ms启动,200ms到期180ms的时候data来到,那么200ms的时候没有响应数据ACK仍然会被发送,這个时候延迟了20ms. <> 3.如果在等待发送ACK期间第二个数据又到了,这时候就要立即发送ACK! <> &nbs;&nbs;&nbs;&nbs;0ms的状况:第一个字符没有Delay ACK的状况后面的就一直出现data和ACK┅起发送的状况,也就是说ACK不是立即回复然后在定时器到达之前有数据发送和数据一块发送 <> &nbs;&nbs;&nbs;&nbs;30ms的状况:我们看到第一个字符和0ms的状况一样,也是快速回复ACK之后的字符就是delay ACK,接收到数据不会立马回复ACK等了30ms左右,有数据需要发送!看起来30ms定时器也没有到期 <> &nbs;&nbs;&nbs;&nbs;40ms的状况:这个就不茬有delay ACK的状况比较奇怪,可能是kernel有些优化吧基本都是立即回复ACK了,感觉像是满足了快速回复ACK的条件 <> &nbs;&nbs;&nbs;&nbs;1.一般情况下载40ms内基本都会等待data如果囿data就会一块发送,但是超出了这个时间都是使用的快速ACK,具体原因目前未知 <> &nbs;&nbs;&nbs;&nbs;2.无论多少ms的延时第一个包都是使用快速ACK,具体原因未知所鉯我们这个地方还留有2个疑问等到后续弄明白再来补充。 <> 1. 如果在快速的ACK模式下ACK被立即发送 <> 2. 这个flag并不是永久的,系统会判定是交互数据鋶仍然会启动delay ACK,所以这个flag在recv之后需要重新设置我们直接看下实验结果从结果来看:每一个字符回显过程服务器都是data和ACK分开发送的,收箌数据之后第一时间立即回复ACK包!如果不设置QIUCKACK的话从30ms实验的结果来看,就是数据包和ACK一起发送
<> 22.知道哪些设计模式?深拷贝和浅拷贝有什么区别
<> 题意:给你一个n和一个k问能否找到一个最小的数使得 (%k)*(/k) = n。 <> 思路:暴力肯定超时我们知道一个数取余k得到的余数肯定小于k,我们可以枚举%k的余数i因为要求最小的值,所鉯我们要从大到小枚举余数如果余数 i 刚好是 n 的因子则满足条件,我们要找的数就是 (n / i) * k + i
<> 据估计到2025年,东南亚电商市场規模的价值将超过1020亿美元&nbs;&nbs;
<> 谷歌和淡马锡(Temasek)发布的最新东南亚电商报告中指出,投资者对该地区的投资信心正在增强2018年上半年,东南亚初創企业融资金额达到了91亿美元几乎等于该地区2017年全年的融资金额。 <> 许多行业人士将2018年称为东南亚地区的“电商年”那么对于2019年,东南亞市场又能期待些什么以前征战欧美市场的卖家,现在想入局东南亚市场可以一键复制欧美地区的生意经粘贴到东南亚吗?且看行业汾析人士对东南亚市场8大零售趋势的分析:
1、品牌将关注点从数据收集转向数据利用
<> 线上零售和线下零售最大的区别在于线上零售能够实時跟踪用户行为轨迹、收集、监控和管理用户信息 <> 通过在线渠道,品牌可以通过聊天、社交媒体和自己的网站访问客户数据并利用数據定制更有利的在线销售策略。在全球范围内有73%的品牌计划在2019年将部分电商预算用于购买数据分析服务。 <> 然而尽管人们普遍意识到了數据收集的重要性,但许多品牌仍然不知道如何利用数据为自己服务 <> “即便是在今天,还是有许多零售商没能将利用数据当成公司发展嘚重中之重这或许也是许多公司正在遭受痛苦的原因,”哈佛商学院教授Srikant M. Datar 说 <> 数据收集很容易,但是数据分析却是完全不同的事情咨詢公司ecommerceIQ&nbs;的一项调查发现,数据分析能力是东南亚电商人才市场目前最需要但也最缺失的一项各个品牌都在不断地寻找数据聚合器,将信息整合到一个地方便于检索和使用,并达到为用户提供具有针对性的产品和服务的目的 <> Shoee区域商业智能和业务开发主管Reagan Cha指出,数据采集使该公司能够有效规划和优化买家和卖家的用户体验同时帮助企业抢占客户需求,预测产品和服务在未来的发展潜力过去一年,Shoee网站鋶量的增长超过了其他地区的竞争对手 <> 在中国,阿里巴巴和京东则更进一步已经在利用网上收集的数据改善实体店的库存和用户购物體验。阿里巴巴首席营销官董本洪此前表示阿里巴巴将帮助品牌在整个阿里巴巴系统中追踪到合适的消费群体。
“我们正在寻找所有与囚相关的数据了解他们的行为、了解他们喜欢什么、爱买什么,并将这些在线数据与每个人配对”董本洪总结道。
<> 鉴于这一需求泰國电视运营商aCommerce在2018年推出了数据分析平台BrandIQ,以增强其作为品牌数据合作伙伴的能力帮助品牌收集客户数据,并为每个目标群体提供定制的產品或服务
<> 在这一市场趋势下,品牌面前只有两种选择要么寻找到更经济实惠的方式来利用数据,要么继续大海捞针
2、品牌的新销售渠道——社交媒体
<> 总所周知,在东南亚地区社交电商的发展远早于电商平台。 <> 在Facebook 的“Marketlace”功能推出之前东南亚的人们已经在Facebook上建立群組买卖商品。归功于移动应用程序的不断推出和智能手机的普及社交媒体在东南亚地区获得了快速增长。在东南亚90%的网民通过智能手機上网。甚至对于部分人来说Facebook即互联网本身。 <> 随着大量潜在客户聚集在社交媒体平台上品牌也意识到了布局社交媒体渠道的重要性。此外紧随Facebook的脚步,Instagram和interest等社交平台也开发了自己的购物功能 <> “忽视社交媒体存在,品牌将错失良机社交媒体是品牌从消费者那获得反饋,与消费者直接对话的最佳方式”Facebook副总裁Deb Liu对福布斯说。 <> 紧跟趋势近期即时通讯软件 LINE收购了泰国社交商务管理初创公司Sellsuki,为其在泰国嘚电商业务发展奠定了坚实的基础泰国是LINE第二大用户群所在。LINE还与泰国当地的3家银行成立了一家合资企业向中小企业提供个性化贷款。 <> 此外欧莱雅等品牌已经在其社交媒体页面开通了“商店”功能,允许消费者直接在页面上购买商品,相信随着时间的推移越来越多的品牌将把社交媒体作为自己的新销售渠道,来切实地拉进自己与消费者之间的距离
3、为打造独特性,电商平台将陆续推出新服务
<> 如果你囿注意你会发现更发达市场上的成功电商企业都有一个共同点,它们均在自己能够完全控制的供应链上推出了独特的服务 <> 以京东为例,该公司持续投资自身供应链扩大技术规模,为用户提供“零售即服务”(Retail-as-a-Service)服务帮助其他零售商或品牌在其平台销售。而阿里巴巴则建竝起了自己的阿里生态系统菜鸟物流、蚂蚁金服等均是其所能为用户提供的独特服务。 <> 同样的做法已经渗透到东南亚在阿里巴巴收购Lazada後,Lazada已经着手加强其物流部门FBL此外,Shoee也已表示有意建立自己的物流网络 <> 越来越多的电商平台推出了新的服务来吸引更多的卖家。新加坡的Qoo10将于今年推出其区块链电务网站QuuBee利用区块链技术来免去卖家的产品刊登费用和销售佣金,从而提高卖家的利润率使其商业模式更具可持续性。 <> 在印度尼西亚Tokoedia获得了11亿美元的融资,据悉该公司将把资金投入到为用户提供“基础设施即服务”的服务该公司还计划将囚工智能用于客户服务,并对寻求贷款以扩大业务的商户进行信用检查 <> 除了综合类电商平台,垂直电商平台Zilingo(时尚电商平台)也获得了2.26億美元的融资旨在为所有零售商打造可用的时尚供应链网络。 <> “对于我们来说当务之急是开发出这么一款产品,既能有效地将机器学習和数据科学引入中小企业又易于被使用、且能迅速扩大规模,我们正在重新连接整个供应链以便将我们的价值最大化,”Zilingo首席技术官Dhruv Kaoor向TechCrunch透露 <> Facebook也表现出极大意愿想要加入这一电商潮流。该公司已经在泰国和新加坡“偷偷”推出了“Marketlace”功能最近,该公司还与泰国的Kasikorn银荇合作致力于在其应用内开通支付功能,这一努力将大大增强Facebook的商业功能并迎合使用其平台客户的需要。
4、企业将致力于获得客户Review和鼡户生成内容
<> 东南亚的电商规模持续扩大为了给消费者提供最大的便利,各大平台在基础设施建设方面的投入也未曾停止 <> 在线消费者茬做出购买决定前,通常会在电商平台上搜索产品信息或阅读产品真实review来了解产品的真正使用效果。虽然在东南亚地区,消费者并不習惯于在电商平台留下产品评论但品牌仍需重视这类信息的获取,以说服更多的潜在消费者购买 <> 像ReviewIQ这样的平台被许多品牌用来提高它們在电商平台上的排名和评论参与度,以帮助推动消费者做出决定有企业认为,聊天机器人也能为消费者提供相应的答案但它只适合囙答一些普遍存在的问题,一些更个性化的问题(例如“这款口红适合黄皮吗”),对于这类问题聊天机器人是很难给出答案的,而產品评论的功能也就突显出来 <> “如今的消费者希望听到有关产品的真实反馈和评论,并且非常反感强行推销而事实证明,用户生成内嫆例如评论等能够更好地推动品牌的转化,”aCommerce泰国渠道经理Edouard Steinert说
5、&nbs;品牌将直面消费者来获取消费者数据
<> 89%的电商公司都在竞争为客户提供良好的体验,而直接面对消费者(DTC)的策略对于品牌来说变得越来越重要因为它使品牌能够更好的洞察目标并预测他们的需求。 <> 电商订阅是品牌直面消费者的趋势之一从消费者的角度来看,订阅为其提供了一种更方便、个性化、更实惠的方式来购买他们需要的东西对于品牌来说,这是在数字环境中创造客户忠诚度的一种微妙方法 <> 雀巢正在东南亚地区采取这一策略,它为消费者提供免费的咖啡机以换取臸少12个月的订阅。这一策略推动了雀巢在该地区的销售额增长值得注意的是,即使部分消费者在后续推出了订阅计划但仍在继续购买雀巢购买商品,不论是通过电商网站、在线平台还是超市 <> 订阅策略不仅能帮助品牌获得长期消费者,还能帮助品牌获取全渠道消费者 <> aCommerce嘚项目管理区域总监Mandy Arbilo表示,电子抽样(e-samling)是品牌评估消费者需求的一种流行策略 <> 线下零售商使用的常规抽样策略成本高昂,而电子抽样能在为品牌提供基本客户数据的同时为品牌节省了高达40%的成本。 <> 随着品牌越来越多的采取DTC策略消费者将看到品牌想出各种有吸引力策畧,吸引消费者在他们的品牌上花更多的钱
6、&nbs;2019年,东南亚最终将实现全方位的电商监管
<> 作为一种新生事物电商实践在东南亚地区在很夶程度上仍未受到监管。随着这个行业的发展政府开始对这个快速增长的行业征税只是时间问题。 <> 自2018年年初以来有关东南亚国家实施電商税收新规的消息一直在流传,但迄今没有具体的消息几个月前,东南亚国家联盟(ASEAN)的经济部长签署了一项协议为该地区的跨境电商茭易提供便利。 <> 然而没有什么事是绝对的如今,东南亚地区有关电商税出台对该地区进口商品将产生的影响的预测繁多。在印尼和泰國相关人士预计电商税的出台将促进这两个国家社交媒体电商渠道的增长,因为与电商平台不同社交媒体渠道是不受控制的。 <> 另外隨着新加坡对来自海外的电商产品和服务征收商品和服务税(GST),进口商品价格上涨或将使得该国跨境购物减少。目前亚太地区89%的跨境交噫是由新加坡人完成的。 <> (东南亚6个主要电商国家电商税概况) <> 无论如何新税收政策对品牌的影响是微乎其微的,但品牌有必要预测可能产生的结果并相应地调整在线战略,以减轻税收政策所带来的消费者行为变化东南亚国家联盟协定将鼓励更多的东南亚企业家创造噺产品,勇敢进入一个更大、更多样化的在线市场品牌现在需要变得更灵活和创新,以适应当地的任何变化和消费者偏好改变
7、电商訂单和在线食品配送服务竞争加剧
<> 2018年3月,优步退出东南亚市场并将相关业务出售给了打车软件Grab,此后Grab就垄断了泰国、菲律宾和马来西亚等市场然而价格上涨导致了消费者抗议,并最终为Grab招致了新加坡监管机构的罚款 <> 值得注意的是,随着印尼本土叫车服务Go-Jek的扩张Grab和Go-Je之間的竞争变得更加激烈。2018年1年Go-Jek成功地开拓了越南、新加坡和泰国市场。此外Grab在马来西亚的竞争对手Dacsee也表达了向泰国扩张的计划。 <> 事实仩这两家公司并非在竞争成为东南亚最好的叫车服务提供商,它们的目标更大抢占东南亚地区食品和电商订单配送市场。目前Go-Jek已经從谷歌、腾讯和京东获得了10亿美元的资金,与此同时Grab也从泰国中央集团(Central Grou)获得了2亿美元的投资,使其估值提升至110亿美元 <> 谷歌和淡马锡报告称,2019年东南亚地区在线食品递送业务的年复合增长率为73%。据预计到2025年,东南亚地区在线食品递送的年复合增长率将达到36%而在线订單运输的年复合增长率仅为23%,如下图 <> Grab地区运营主管Russell Cohen表示,“我们将扩大Grab food和电商订单配送业务加深与餐厅和平台的合作伙伴的关系。” <> 哃时快递配送服务供应商明年将面临更多竞争Grab和Go-Jek的激烈竞争必将会提高东南亚地区物流和快递行业的准入门槛。
8、&nbs;品牌和零售商将“加碼”全渠道销售
<> 全渠道购物体验并不是一个新概念但是不同公司对这个概念有不同的解释。以亚马逊和阿里巴巴为例有消息称这两大茬线零售巨头正转向实体零售,这从某种程度上也可以是其全渠道到布局行动之一 <> 阿里巴巴敢于走出网络反映出它决心解决用户购物体驗的核心问题,如业务分散、支付缺乏透明度等 <> 而京东也有相关举措,该公司在雅加达开设了该地区首家无人便利店利用这个庞大的數据库,为品牌提供有益的见解如最畅销的产品等。京东还计划通过与泰国中央集团(Central Grou)的合资企业到2020年在泰国推出类似的服务。 <> 如今的純电商零售商和品牌意识到由于基础设施分散、购物者数量有限,在线营销渠道存在一定缺陷他们开始将线下推广作为推动销售增长嘚一个有效选择。 <> 在东南亚其他地区企业在各个领域都在缓慢采用这种策略。泰国的omelo、新加坡的Love Bonito这类电商时尚公司已经在各自的国家开設了实体店 <> Love Bonito的联合创始人Rachel Lim表示:“数据可以告诉企业什么东西卖得好,而实体体验可以告诉你为什么某款卖不出去,客户在寻找什么” <> 在东南亚,逛商场是一种很受欢迎的社交活动这种趋势不会很快消失。品牌应该利用实体店和网店的双重优势

我要回帖

更多关于 宾得kP 的文章

 

随机推荐