`
sslaowan
  • 浏览: 380433 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从面试别人想到的

阅读更多
      最近一个月面试了10几个人,有应届毕业生,有在校寻找实习的学生,有工作了两三年的,也有工作了5到10年的,有在外包公司工作的,有目前在世界级外企的。结果是,一无所获。
      想起两年前,研究生二年级上学期开始找工作,面试了几个公司的经历,和一些师弟师妹问我的一些问题,不禁让我想到了很多。主要有两个方面:
      1 我们应该如何面试,才能挖掘出应聘者的真实能力
      2 从面试中,我渐渐的画清楚,一个公司需要什么样的人才,我自己应该如何规划我的未来。
     
      我面试别人掌握两个原则:
      1 此人掌握的主要技能是我们所需要的
      2 此人虽然尚未掌握我们所需要的所有技能,但是从他已经掌握的技能可以看出他的潜力和当前的Level。
      第二点很重要,就像Kent Beck不是Flex高手,但是我相信如果他愿意学习,他很快就会成为Flex的高手。

      我觉得我们招人主要基于以下考虑:
      1 需要某方面专门人才,来和我们现有的人形成互补。
      2 需要一些具有我们项目所需要的技术的人,他的技能会跟我们类似,但即便这样,我们依然希望他会是某方面的专家,比如Spring Security这么一个框架的专长也是Plus。而且,我希望这个人比我强。

   

     我招人的时候希望此人具有以下的气质:
     1 热爱编程,相信软件工艺,也相信软件工程。最近在看Kent Beck的实现模式和Bob大叔的代码整洁之道,我希望他能跟我一样,认为代码是给人看的,好的代码像一篇文章一样。能够反复去雕琢一段代码。但是要理解软件工程,不能为了雕琢每一段代码,而缺乏全局认识。
     2 热爱编程,能够为解决一个问题,写一段漂亮的代码,甚至于为类起一个好的名字而失眠。
     3 热爱编程,把这当作是一项事业,而非仅仅是工作。那种只是想把工作对付完了就OK的人是不适合的。
     4 热爱编程,单纯的用程序交流,人也像好代码一样,干净利落,说话直来直去。大家都很忙,没时间听客套话和绕圈子。     

      就像当年别人面试我的时候那样,我会这样去面试别人:
      1 从简历里挑出我最关心的他所会的技能,比如最近我希望招一个JS高手,最好精通Dojo(我说的精通是真的精通)。
      2 我会问他最擅长的技术(如果此技术不是我们最需要的那个),如果他最擅长的技术都语焉不详,那就没什么意思了。
      3 我会问某项技术全貌上的问题,比如会让对方谈谈Dojo的整个架构,是怎么解决JS领域的一些核心问题的。
      4 我会问一些技术细节,比如Spring的声明式事务处理是怎么实现的,因为这一个问题就暗含了AOP的概念和如何实现,代理模式,线程,JDBC事务处理。如果应聘者看过Spring的源代码,那么说明此人能够花心思追究技术更深层次的东西,具有优秀程序员一个优秀品质:好奇心。如果应聘者没看过Spring的源代码,他能回答上来,说明此人各方面基础知识扎实并能融会贯通去解决问题。同样我会问Hibernate的延迟加载是怎么实现的。
      5 我会问一些工程性问题,比如Spring的依赖注入,Scope为Session的Bean如何注入到Scope为Singleton的Bean。比如如何调整Hibernate查询性能。比如数据库索引会在什么情况下失效,原理是什么。
      6 我会问一些解决方案,比如如何重启服务器后,依然能够保持Session。
      7 我会问一些企业开发中特别重要的问题对方是如何理解的,比如事务,并发,内存管理,异构系统整合,数据库性能优化。
      8 我会问一些特别基础的问题,比如HashSet是如何判断新添加的对象是否已经存在的,如果已经存在,它是不再放进去,还是放进去覆盖之前的。比如ClassLoader的工作原理。
     
      当我面对一些工作了四年以上的人时,多少是有点惴惴,因为会担心对方很牛,我却挖掘不出。后来请教了一位工作了六年的同事,他说一个简单的原则是:
      问他你目前在项目中遇到的问题,因为这些问题都是大家讨论的,深思熟虑的,然后问他的解决方案。

      我面试的这些人,有时让我很感慨,为什么工作了四五年的人,甚至是十年的人,号称自己精通Dojo,但是一些基础性问题都不清楚,因为我是初学者,但是我会买一本Dojo之父写的精通Dojo去学习,甚至于我带的一个大四的实习生都知道去遍历网上所有的Dojo基础资料,然后把源代码看看。我需要的是,当我问及一个问题时,告诉我Dojo正确的做法是什么,而不是仅跟我一样,遇到一个JS问题,只能去网上搜一段代码,改改放到项目中,甚至于那段代码他都不完全理解。比如我现在也在阅读Javascript高级编程指南,以了解细节。
      
       跟一个很牛的同事一起面试别人JS,我觉得那人技术还算熟练,但是我的同事摇摇头说,一个人工作了四年,连如何用JS模拟Java中的类,JS的事件框架是怎么回事都不清楚,怎么能行呢。

       我想,或许,这也是我的奋斗目标:
       1 成为丁字形人才,有一项自己特别精通的技术,比如我的那位同事精通Extjs,精通JBPM,精通Spring Security,那是真的精通,另一位同事精通Lucence,还有的精通JQuery,有的非常熟悉Oracle。
       2 其实我对于我想招的人的要求,就是对自己的基本要求。
         
分享到:
评论
187 楼 抛出异常的爱 2011-01-28  
sslaowan 写道
aws 写道
spyker 写道
Bowner 写道
按楼主这个标准,公司会永远缺人,而且说实话,换了是我,肯定也过不了楼主的要求,就算过了而且待遇也符合要求我也不会去上班,呵呵。我招人的时候只有一个目的,我希望招进来的人能开开心心地和团队其它的伙计一起完成一个目标,仅此而已,当然如果双方配合不错,可以成为朋友,那么以后很有可能会再成为同事。

ps:个人认为任何技术都是过眼云烟,只有解决问题的思路才是最重要的。我现在手下就有两个伙计,其中一个工作3年,技术功底一般,只是会在Spring,Hibernate框架下写代码而已,而另一个工作6,7年,技术功底很好,对Spring底层很熟,现在问题来了,相同的业务模块,前者两天搞定,后者一周都没完工,还一堆BUG,到底谁好谁坏呢?呵呵



这么神奇....


没啥神奇的吧
对spring底层了解熟悉并不等于就能做好业务功能开发
开发业务功能更重要的是对业务的理解和分析,对数据结构的理解,绝大多数情况下还包括SQL的能力和前端页面与js脚本的开发能力,再就是经验了,怎么才能更快更好的ctrl&c ctrl&v来实现功能或者通过修改继承现有功能来实现需求等等等

在系统框架已经有更高级的架构师搭好之后,能倒背如流spring的源码又如何,懂JVM怎么实现的,垃圾收集器怎么工作的又如何,懂创建了几个string对象,懂servlet的生命周期又如何,对开发业务模块根本毫无意义


其实这种情况也好理解,比如你的业务系统压根不需要考虑在高并发下的缓存策略(比如Hibernate缓存,比如为了减少创建开销而使用单例但是又面临同步问题的取舍),对内存占用释放也没啥要求,不涉及到并发锁,不涉及到JDBC和存储过程协同事务,不涉及到异构系统的服务调用,等等吧。
而且有时可能看到一个高手写了一堆代码,用以解决浏览器back按钮问题,解决并发问题(如果你们公司恰好没有QA测试这个方面,而这个错误恰好在并发数达到50时才会出现,哈,那个一般程序员还被认为更优秀,而高手反倒写了一堆让人看不懂的代码),解决可扩展性问题,等等,比那个一般程序员开发同样“业务”功能的模块由于考虑了更多问题,系统更高效稳定,结构更优雅,因此花费了更多时间。

而正是不少企业的技术领导不理解这一点,才会有开发业务系统不需要精通技术的错误,重业务而轻技术,学习也是这么教育的,可悲啊。


当然高手写的代码更烂!
QA不测试 的功能
加入纯ZB
186 楼 jinfacesmile 2011-01-27  
学到了很多东西,真的有你像你说的这种人吗?
185 楼 sslaowan 2011-01-27  
aws 写道
spyker 写道
Bowner 写道
按楼主这个标准,公司会永远缺人,而且说实话,换了是我,肯定也过不了楼主的要求,就算过了而且待遇也符合要求我也不会去上班,呵呵。我招人的时候只有一个目的,我希望招进来的人能开开心心地和团队其它的伙计一起完成一个目标,仅此而已,当然如果双方配合不错,可以成为朋友,那么以后很有可能会再成为同事。

ps:个人认为任何技术都是过眼云烟,只有解决问题的思路才是最重要的。我现在手下就有两个伙计,其中一个工作3年,技术功底一般,只是会在Spring,Hibernate框架下写代码而已,而另一个工作6,7年,技术功底很好,对Spring底层很熟,现在问题来了,相同的业务模块,前者两天搞定,后者一周都没完工,还一堆BUG,到底谁好谁坏呢?呵呵



这么神奇....


没啥神奇的吧
对spring底层了解熟悉并不等于就能做好业务功能开发
开发业务功能更重要的是对业务的理解和分析,对数据结构的理解,绝大多数情况下还包括SQL的能力和前端页面与js脚本的开发能力,再就是经验了,怎么才能更快更好的ctrl&c ctrl&v来实现功能或者通过修改继承现有功能来实现需求等等等

在系统框架已经有更高级的架构师搭好之后,能倒背如流spring的源码又如何,懂JVM怎么实现的,垃圾收集器怎么工作的又如何,懂创建了几个string对象,懂servlet的生命周期又如何,对开发业务模块根本毫无意义


其实这种情况也好理解,比如你的业务系统压根不需要考虑在高并发下的缓存策略(比如Hibernate缓存,比如为了减少创建开销而使用单例但是又面临同步问题的取舍),对内存占用释放也没啥要求,不涉及到并发锁,不涉及到JDBC和存储过程协同事务,不涉及到异构系统的服务调用,等等吧。
而且有时可能看到一个高手写了一堆代码,用以解决浏览器back按钮问题,解决并发问题(如果你们公司恰好没有QA测试这个方面,而这个错误恰好在并发数达到50时才会出现,哈,那个一般程序员还被认为更优秀,而高手反倒写了一堆让人看不懂的代码),解决可扩展性问题,等等,比那个一般程序员开发同样“业务”功能的模块由于考虑了更多问题,系统更高效稳定,结构更优雅,因此花费了更多时间。

而正是不少企业的技术领导不理解这一点,才会有开发业务系统不需要精通技术的错误,重业务而轻技术,学习也是这么教育的,可悲啊。
184 楼 小林信仁 2011-01-26  
看了楼主的招聘要求,我想起了罗纳尔多。
183 楼 独爱Java 2011-01-26  
sslaowan 写道
zhangmingji 写道
顶,楼主。前辈,我想问个问题,如果是应届生,掌握了开发中要的技术,能够熟练运用,但是不能到您说的精通的地步,这可能只是时间关系,对于编程有很高的热情,Java基础扎实,熟悉并能运用常用的设计模式,熟悉MySQL,Oracle等常用的数据库,做过一些小项目,能运用一些开源框架。对于这样的应届生如果您刚好就是面试官,您是怎样想的,能否谈谈您的看法,给点建议。


应届生最重要的有两点:
1 对技术的学习要有框架性的理解,要有个好习惯
2 要积极主动,做到我所说的热爱。

应届生不需要精通,但是如果能精通一样也不错,比如我身边就有应届生把某项技术玩的让人叹为观止。



我今年大三,只是接触过一些框架性的东西,顶多了解,说精通是瞎掰,楼主要求的这些问题我都答不怎么上来!不过楼主对应届生提到的两点我十分赞同,好的编程开发习惯和积极主动的态度很重要!!!
182 楼 leemny 2011-01-20  
思路不敢苟同

大概领域不同,需要的人才不同

了解一些东西的原理是需要的,但是不是必要的
181 楼 eclipse2008 2011-01-14  
aws 写道
eclipse2008 写道
sslaowan 写道
     

       我想,或许,这也是我的奋斗目标:
       1 成为丁字形人才,有一项自己特别精通的技术,比如我的那位同事精通Extjs,精通JBPM,精通Spring Security,那是真的精通,另一位同事精通Lucence,还有的精通JQuery,有的非常熟悉Oracle。
       2 其实我对于我想招的人的要求,就是对自己的基本要求。
         



1。同事精通Extjs,精通JBPM,精通Spring Security

2。同事精通lucene,还有的精通JQuery

这两个人如果给我选,我选2


如果是要你们是要做ERP或者CRM之类的业务系统
找个精通lucene,还有的精通JQuery顶个X用

技术并不分高下,关键是各有各的用途



要是真做这两个系统,那还真需要
180 楼 aws 2011-01-13  
eclipse2008 写道
sslaowan 写道
     

       我想,或许,这也是我的奋斗目标:
       1 成为丁字形人才,有一项自己特别精通的技术,比如我的那位同事精通Extjs,精通JBPM,精通Spring Security,那是真的精通,另一位同事精通Lucence,还有的精通JQuery,有的非常熟悉Oracle。
       2 其实我对于我想招的人的要求,就是对自己的基本要求。
         



1。同事精通Extjs,精通JBPM,精通Spring Security

2。同事精通lucene,还有的精通JQuery

这两个人如果给我选,我选2


如果是要你们是要做ERP或者CRM之类的业务系统
找个精通lucene,还有的精通JQuery顶个X用

技术并不分高下,关键是各有各的用途

179 楼 aws 2011-01-13  
spyker 写道
Bowner 写道
按楼主这个标准,公司会永远缺人,而且说实话,换了是我,肯定也过不了楼主的要求,就算过了而且待遇也符合要求我也不会去上班,呵呵。我招人的时候只有一个目的,我希望招进来的人能开开心心地和团队其它的伙计一起完成一个目标,仅此而已,当然如果双方配合不错,可以成为朋友,那么以后很有可能会再成为同事。

ps:个人认为任何技术都是过眼云烟,只有解决问题的思路才是最重要的。我现在手下就有两个伙计,其中一个工作3年,技术功底一般,只是会在Spring,Hibernate框架下写代码而已,而另一个工作6,7年,技术功底很好,对Spring底层很熟,现在问题来了,相同的业务模块,前者两天搞定,后者一周都没完工,还一堆BUG,到底谁好谁坏呢?呵呵



这么神奇....


没啥神奇的吧
对spring底层了解熟悉并不等于就能做好业务功能开发
开发业务功能更重要的是对业务的理解和分析,对数据结构的理解,绝大多数情况下还包括SQL的能力和前端页面与js脚本的开发能力,再就是经验了,怎么才能更快更好的ctrl&c ctrl&v来实现功能或者通过修改继承现有功能来实现需求等等等

在系统框架已经有更高级的架构师搭好之后,能倒背如流spring的源码又如何,懂JVM怎么实现的,垃圾收集器怎么工作的又如何,懂创建了几个string对象,懂servlet的生命周期又如何,对开发业务模块根本毫无意义
178 楼 spyker 2011-01-13  
Bowner 写道
按楼主这个标准,公司会永远缺人,而且说实话,换了是我,肯定也过不了楼主的要求,就算过了而且待遇也符合要求我也不会去上班,呵呵。我招人的时候只有一个目的,我希望招进来的人能开开心心地和团队其它的伙计一起完成一个目标,仅此而已,当然如果双方配合不错,可以成为朋友,那么以后很有可能会再成为同事。

ps:个人认为任何技术都是过眼云烟,只有解决问题的思路才是最重要的。我现在手下就有两个伙计,其中一个工作3年,技术功底一般,只是会在Spring,Hibernate框架下写代码而已,而另一个工作6,7年,技术功底很好,对Spring底层很熟,现在问题来了,相同的业务模块,前者两天搞定,后者一周都没完工,还一堆BUG,到底谁好谁坏呢?呵呵



这么神奇....
177 楼 luolonghao 2011-01-13  
楼主是程序员的典范,这么高的热情如果长期保持就非常难能可贵,有热情就可以不知疲倦地投入很多时间做开发和学习,写程序和打游戏一样有趣让人兴奋,在这个状态下编程相关知识会爆炸性的增长,国外的那些不少大家崇拜的大牛大多数都是这样的狂人。
176 楼 抛出异常的爱 2011-01-13  
firesoul 写道
nintenyun 写道
楼主 能够招这样的人来个10个
你应该可以创造第二个google了


个人觉得这种人只能copy一个google而不能创造一个

如果能用脑子干活.
作不出google
每个月挣到一二百万不成什么问题

当然前提是让十个精神病为同一件事努力
175 楼 firesoul 2011-01-12  
nintenyun 写道
楼主 能够招这样的人来个10个
你应该可以创造第二个google了


个人觉得这种人只能copy一个google而不能创造一个
174 楼 nintenyun 2011-01-06  
楼主 能够招这样的人来个10个
你应该可以创造第二个google了
173 楼 axhack 2011-01-06  
你们别吵了
我就想知道楼主是什么公司,这样的人给多少工资。
好让小弟面试时心理有个数。
在者满足下我的好奇心。
172 楼 eclipse2008 2011-01-05  
sslaowan 写道
     

       我想,或许,这也是我的奋斗目标:
       1 成为丁字形人才,有一项自己特别精通的技术,比如我的那位同事精通Extjs,精通JBPM,精通Spring Security,那是真的精通,另一位同事精通Lucence,还有的精通JQuery,有的非常熟悉Oracle。
       2 其实我对于我想招的人的要求,就是对自己的基本要求。
         



1。同事精通Extjs,精通JBPM,精通Spring Security

2。同事精通lucene,还有的精通JQuery

这两个人如果给我选,我选2
171 楼 sslaowan 2011-01-05  
firesoul 写道
sslaowan 写道
你的意思我明白了,对于一个物理学家而言,能够会写拉格朗日方程不重要

哥 你看看你 你就是个抓住机会就想炫耀与装逼的人
好吧 我满足一下你的虚荣心吧 你懂的真他妈多啊 连狗日的方程都懂你真他妈不是一般的棒 佩服佩服
不好意思 小弟我就是个粗人 装逼和装忧郁都装不来 原谅我的粗俗


我更明白了,对于你而言,XX是最重要的。
我估计你只懂得拉过来日方程吧,哈哈
170 楼 firesoul 2011-01-05  
sslaowan 写道
你的意思我明白了,对于一个物理学家而言,能够会写拉格朗日方程不重要

哥 你看看你 你就是个抓住机会就想炫耀与装逼的人
好吧 我满足一下你的虚荣心吧 你懂的真他妈多啊 连狗日的方程都懂你真他妈不是一般的棒 佩服佩服
不好意思 小弟我就是个粗人 装逼和装忧郁都装不来 原谅我的粗俗
169 楼 sslaowan 2011-01-04  
firesoul 写道
sslaowan 写道

这里讨论的是你所谓的3技术面。请详细描述之。我也会问最大成就最大困难,但是如果他遇到的最大困难是一个大四的学生就能解决的,最大成就就是一个大四的学生能实现的,那就没意思了。我问的问题都是基础的解决方案问题了,比如重启服务器session丢了怎么办?你可以跟我讲各种方案,讲session原理,但是你得讲点东西出来,甚至于解决这个问题。可能是自创的,或者是利用服务器配置的,这都没关系。

1. 面试最重要的是面出一个人的编程能力而不是背诵能力。你的这些问题在我看来懂不懂都没关系。
2. 一个再高级人才所谓最大困难最大成就一个大四学生基本也能搞出来,如果是算法可能大四的能力更强一点。差别在于高级人才的代码最多改改就可以生产部署了。大四学生的代码再改你也许都不敢用。


你的意思我明白了,对于一个物理学家而言,能够会写拉格朗日方程不重要
168 楼 firesoul 2011-01-04  
sslaowan 写道

这里讨论的是你所谓的3技术面。请详细描述之。我也会问最大成就最大困难,但是如果他遇到的最大困难是一个大四的学生就能解决的,最大成就就是一个大四的学生能实现的,那就没意思了。我问的问题都是基础的解决方案问题了,比如重启服务器session丢了怎么办?你可以跟我讲各种方案,讲session原理,但是你得讲点东西出来,甚至于解决这个问题。可能是自创的,或者是利用服务器配置的,这都没关系。

1. 面试最重要的是面出一个人的编程能力而不是背诵能力。你的这些问题在我看来懂不懂都没关系。
2. 一个再高级人才所谓最大困难最大成就一个大四学生基本也能搞出来,如果是算法可能大四的能力更强一点。差别在于高级人才的代码最多改改就可以生产部署了。大四学生的代码再改你也许都不敢用。

相关推荐

    八种面试经验

    本文将从八个不同的角度解析常见的面试官类型,并提出相应的应对策略,帮助求职者在面试中更加游刃有余。 #### 1. 性格外向型面试官 这类面试官通常充满活力,善于交谈,肢体语言丰富,具有较强的感染力。他们往往...

    医学检验事业单位面试.pdf

    ③要反省自己的言行,是否某些地方引起患者的误解,从而促使他们想到送红包。 问题4:如何正确处理人际关系? 回答要点: ①首先做好本职工作,不让人际关系影响到工作的进程。 ②反省自己,找出问题所在。 ③若...

    组织部面试题目.pdf

    ”和“为什么你想到这里来工作?”询问应聘者的工作动机和他们对组织的期待。 5. **团队协作与沟通**:“你参加过什么业余活动?”和“你认为做好团委组织部的工作最重要的是什么?”这两个问题关注的是应聘者的...

    十三张图带你彻底了解所有数据结构.docx

    直到18年的某一场面试,从头到尾都聊的非常好,薪资也谈的差不多,最后别人忽然想起来问我熟不熟悉数据结构,常见的数据结构有哪些,能不能手写一个出来,至今都记得那是一次多么羞愧的否认三连,不熟悉不清楚不会写...

    简单手写tcp-rpc.zip

    >还记得第一次听到这词是在别人的面试视频里,简单了解了一下只知道是远程调用。 >万万没想到我的第一次面试的第一个问题就是与此相关,希望认真准备每一次面试,及时查漏补缺,谨以此文,代表诚意~奥利给! > ...

    SSH框架搭建

    这些天有点时间想到很多经常去面试时别人要我们搭个框架,可是很多人确不会,现在我搭建好的,直接导进去就可用,自己添加个ojdbc14.jar包。我有创建两张表,创建语句也放到项目中,有一个从页面进入测试的方法。...

    手撕RPC实现基于TCP的仿Dubbo简单实现

    万万没想到我的第一次面试的第一个问题就是与此相关,希望认真准备每一次面试,及时查漏补缺,谨以此文,代表诚意~奥利给! 思路: my-rpc通过client调用interface给server 方法调用效果实现 分模块 写接口 序列...

    Java版水果管理系统源码-2020-job-cs-note:2020年秋招小结

    此外,本文简要记录了个人面试的情况,附件中包含秋招流程中所有自己作||帮别人做的笔试、面试coding题。大家可以看一看,直观感受一下笔试和面试分别的coding难度。 在动笔前收集了师弟师妹们关于秋招的一些迷思,...

    leetcode下载-fuck-leetcode:他妈的leetcode

    实在做不出来可以看别人的解题思路,抄一遍,然后过几天再做一遍 leetcode 初级算法(一定要做到举一反三,融会贯通。第一遍做忘记不要紧但是要想到解决思路) 分节找自己薄弱又常考的算法 刷题到融会贯通 参考链接 ...

    leet_code:记录我已经成功提交的问题,而解决方案可能不是我首先想到的

    在编程世界中,LeetCode 是一个非常受欢迎的在线平台,它提供了一系列的编程挑战和面试问题,旨在帮助程序员提升技能并准备技术面试。这个压缩包文件 "leet_code-master" 显然是一个与 LeetCode 相关的项目,可能是...

    基于Linux的多功能聊天室

    其实这个项目在我电脑已经躺了多时,初写完项目规划后,我认认真真地去实现了它,后来拿着这个项目区参加了面试,同样面试官也拿这个项目来问我,当然我是做过一遍了,而且为了面试,我将什么strcpy,strlen等常用的...

    利辛事业编招聘2017年考试真题及答案解析最全版.docx

    成功之道在于做别人没想到的事情,比如在淘金热潮中提供运输服务。 4. 这是一个填空题,形式可能是类比关系,如"华尔兹"对于舞蹈,就像"探春"对于《红楼梦》。这道题目的答案应该是舞蹈类型与文学作品的对应关系。 ...

    2022年c语言重点知识点总结.docx

    1)采纳第三方变量(最简单想到的方法):通过使用第三个变量来实现交换。 代码如下: ``` temp = a; a = b; b = temp; ``` 2)采纳加减法进行值得交换(面试时常用):通过加减法来实现交换。 代码如下: ``` b =...

Global site tag (gtag.js) - Google Analytics