给高中学弟学妹们

毕业已10年,但是高中的岁月仿佛昨日,雪天的打闹,同桌的微笑,青春的烦恼;英语的周报,黄冈的卷子,海淀的大纲。

以下是一个过来人的经验之谈,望学弟学妹们看完以后有一些心得。

  1. 专业问题:我只说说计算机专业,其他的大家可以网上找一些资料看。计算机专业主要学习内容偏逻辑和数学。

毕业以后三个主要方向:一个是工程类型,在公司实际编写软件,主要内容是应用语言以及现有框架,实现逻辑,完成功能,俗称码农(www.coolshell.cn,是一个高级工程师的博客,可以看看);另一个是研究类型,主要是编写、完善和优化各种基础软件,为工程码农提供便利(www.apache.com 是一个基金会,全世界最有名的开源软件社区,包含很多种框架类软件,大家可以看看功能);最后一个是学术类型,主要是搞理论研究,搞底层算法,发表论文,是揭示真理的人员(http://www.yinwang.org/ 是一个搞计算机语言分析的工程师的博客,有才但是愤世嫉俗)。

  1. 学习问题:高中阶段学习固然重要,但是我认为大学和研究生阶段的学习更加重要。高中学习有升学压力,学习相对注重应试,学习方向清晰,到了大学以后反而迷茫起来(最起码我当时是)。现在回头想想,人的任何提升,本质上都是认知的提升,回想一下我的往事,凡是有价值的东西,其实都是各种学习和经历得来的,正因为大学的自由,所以大学期间,我们可以从许多方向上提升认知,大学期间至少应该做这些事情:

  2. 学习一种乐器,以后学起来比较困难

  3. 多去图书馆,多读书,特别是名人传记,这样可以参考其他人的奋斗和生活方式
  4. 确定奋斗方向,一旦确定,就全力以赴,老师、同学、学生会、社团甚至学校都是你的资源
  5. 谈一场恋爱,老司机除外

希望大家可以少走弯路,有任何问题,欢迎qq咨询,753567658。

2016美团面试经历

这是一个雾霾的下午,我来到了美团的办公楼,开始了面试,不知怎么的,来之前,底气有些不足
面的越多,就会越知道自己的不足吧。
事实证明,美团的面试确实不简单,要比百度的更加详细一些,非常的具体,每个问题基本都是技术的更进一步,怎么理解呢?
基本上就是日常工作中多问几个为什么,还真的需要积累

美团的面试只有一轮,在我这里(以下问题不根据时间排序)

java方面

  1. java中的引用有几种?

    1. 强引用,正常创建的new的对象,这些对象一旦被创建,不会被垃圾回收线程销毁
    2. 软引用,如果内存空间够,那么不会被回收,如果空间不够,那么会被回收
    3. 弱引用,下一次垃圾回收肯定会被回收
    4. 虚引用,和回收队列联合使用
    5. final引用
  2. Java中的threadlocal是怎么用的? threadlocal中的内部实现是怎么样的? 哪种引用?

  3. java中的”final”关键字在多线程的语义中,有什么含义
  4. 说说nio的架构,为什么变快了,说说select和buffer都是怎么用的?
  5. 在操作系统中的实现原理? 如果都是cpu轮训话,会不会对cpu影响太大?
  6. 应用到了linux中的什么特性?
  7. nio中, 如果不显式的调用 system.gc() 那会出现什么问题?
  8. jvm的垃圾回收分为哪些种类?每一种都是怎么去实现的?讲述一下G1的回收策略?
    7.
    jvm中的参数分为哪些种类,都是做什么的?jvm的监控怎么做?实际项目上线以后的监控怎么做?
  9. JVM中,如果把堆内存参数配置的超过了本地内存,会怎么样?
  10. JVM中的内存结构分为哪些方面?
  11. 栈空间是怎么样的?每个线程只有一个栈吗?
  12. 栈空间的内部结构是怎么样的?
  13. 堆内存为什么要设计为分代?
  14. ArrayList的实现原理,如何测试ArrayList动态分配内存中带来的内存、cpu变化
  15. ArrayList是不是线程安全的? 怎么实现线程安全的?
  16. synchronizedlock有什么区别?
  17. volatile的作用,如果volatile修饰的对象经过了大量的写,会出现什么问题?
  18. String的+和StringBuilder有什么区别? 放在循环中有什么问题?
  19. 日志打印的过程中,使用String的+操作和使用占位符输出,对性能上有什么区别
  20. SimpleDateFormat如果是一个全局变量的话,有什么问题?
  21. HashMap的操作中,直接使用keySet()遍历有什么问题?
  22. Random中,种子一样的话,就一定会生成一样的随机数吗?
  23. spring的aop是怎么实现的?除了字节码扩展以外,还有其他实现机制吗?
  24. 类加载器的概念,简述一个类加载器的加载过程
  25. 简述一个类的加载过程

计算机结构方面

  1. linux中awk命令的使用?
  2. nginx是多线程还是单线程?
  3. linux中如何监控和查看内存、cpu情况?
  4. 负载分为哪些类别和层次?你们项目中是怎么用的?
  5. mq是如何使用的?
  6. http协议建立连接的过程是怎么样的?
  7. https建立连接的的过程是怎么样的?
  8. forward和redirect有什么区别?
    5.
    linux如何实现nginx的高性能?有什么特性被应用了?直接来说,就是基于linux的网络编程
  9. redis中,是如何进行

数据库方面

  1. 数据流的锁级别,乐观锁和悲观锁的概念,是不是只有悲观锁?
  2. 数据库如何实现事务?
  3. 有没有什么研究深入的技术,或者比较满意的项目?

《三体》和大刘的科幻

《三体》和大刘的科幻


好多年前的一个傍晚,夕阳把树干照的金黄,踩在脚下的落叶碎裂开来,仿佛能闻到一股树木的清香,面前就是常来的那家书店,我知道,人群之中,会有老友静静的等我。那天是5号,《科幻世界》杂志如期而至,与我不见不散。


《科幻世界》的一群老朋友中,最让人钦佩景仰的非刘慈欣先生莫属了。是的,他就是小说《三体》的作者,也是第一位中国科幻文学
“雨果奖”
的加冕者。《三体》,利用三部曲小说,世界观宏大而真实,故事细腻而富有感染力,真令人手不释卷,拍案叫绝。


我第一次认识刘慈欣,是从《科幻世界》上的不定期刊载他文章开始的。当时的刘慈欣,还没有雨果奖的光环加身,但是在我们科幻迷的小圈子中,早已成了偶像一般的人物,并且亲切的称呼刘慈欣先生为
“大刘”。


在当时的科幻文学圈子中,不乏各种各样风格的作家,如王晋康、何夕,与大刘并称带动90年代科幻文学复兴的“三驾马车”,然而他们作品风格迥异,前者苍凉沉郁,冷峻峭拔,后者富有哲理,深不可测;如韩松,作为新华社记者的他,作品带有鲜明的后现代主义文本特征,以卡夫卡式的阴暗绝望,梦魇般的非理性风格,自成一派;如钱莉芳,作为历史老师的她,作品架构于历史之上,却又高于历史,以做学问般的钻研劲儿去写科幻。

​ 但是大刘为何能独树一帜呢?

​ 其实在科幻文学的分支中,素有 “软” 和 “硬” 之分,‘‘软科幻“
尽量以故事情节、寓意与人物性格取胜,降低科学技术和物理定律。“硬科幻”
则在科学技术和物理定律之上加以展开合理的想象,情节往往基于当前的现实展开,充分利用和补充前沿的科学技术和物理学定律。

​ 大刘就是 “硬科幻”
的首席选手。他本身作为娘子关的工程师,对科学技术具有想当的了解,并且针对每种技术具有入木三分的想象,同时他编写的故事富有英雄主义,有激情和热血,场面宏大,磅礴大气。大刘作品不计其数,每一篇都带有大刘对待事物的看法。


《乡村教师》,以山区的教师为原型,借孩子们的口,消除了外星人对地球的攻击,同时歌颂了下乡教室的伟大和勇气;《带上她的眼睛》则借助虚拟视觉和地心探测,描写了一个委婉感人的爱情故事;《圆圆的肥皂泡》,则描写了一个执着的女孩子,靠着对肥皂泡的执着,最后依靠肥皂泡,完成改善了西北缺水情况的壮举;《中国太阳》描述了一种巨型的镜面,在太空中依赖反射太阳光针对某个地区局部加热,达到改善气候的作用,而主人公
“水娃”
则是太空巨型镜面一名普通的清洁人员;《球状闪电》中,大刘靠着神奇的想象力,近乎完美的解释了“球状闪电“这一神奇的现象,同时刻画了简易的中国军人的形象;终于到了关键的《三体》,不客气的说,三体作为一个长篇小说,其中的任意一个想法单独摘录出来,甚至都可以单独成文,可是大刘却毫不吝惜的都写到了一部作品之中。《三体》故事讲述的是地球人和外星人的一系列博弈和战争,以及地球人在广阔、充满敌意或者善意的众多宇宙文明面前,进行对策和一系列产生的后果。难能可贵的是,针对《三体》中所有应用到的物理知识和科学技术,都是在现有基础之上进行合理的扩展和想象,纵观全书,几乎没有一个概念是说不清楚或者无法引用据点的。

​ 不仅如此,大刘本人还是一名非常具有 “闹腾精神”
的理工男,用现在的流行词解释,那就是“极客”。这种示例不胜枚举,比如老早,大刘就编写了一套程序,专门用来生成现代诗,我亲自实验过,生成的现代诗还是不错的。不仅如此,大刘还有针对生命游戏的设计,以及对于足球运动的丰富幻想。

2016-58同城面试经历

58同城的办公地点坐落在酒仙桥的电子产业园,毗邻电影博物馆和798艺术中心。附近没有地铁站。
但是有公交车站以及班车。

58在产业园有3栋楼,还有一栋正在大兴土木。

还没有进入园区,就听到了58的slogan,一直在滚动播放。58的主楼是105号楼。一进入大厅,左边是前台,前台的装饰类似饭店的收银台,正面是供给访客的休息区,休息区左侧是由9块屏幕组成的LED阵列,上面显示58一天内的各种访问数据,每秒去刷新一次。休息区右侧则是58获取的所有奖杯。奖杯墙直通2楼,墙壁上是58创始至今的所有重大事件的timeline。

前台姑娘一看我填的表,惊喜的赞叹竟然是老乡

这次一共进行了两轮技术面试

第一轮面试

面试官主要是根据你项目经验以及实现中的技术进行提问

  1. 说说tomcat中classloader的加载过程
  2. 区别一下jetty和tomcat,两者有何不同
  3. tomcat调优是怎么做的
  4. redis的使用,何时做数据备份,何时部署集群
  5. Map接口有多少种实现,TreeMap内部的数据结构是怎样的,HashMap内部数据结构是怎样的
  6. 介绍一下ElasticSearch,和solr,lucene有何不同,适用何种场景
  7. 说说Java的内存结构
  8. 说说看过的技术书籍
  9. 说说位图法,目前的工作中,都适用于哪些场景

第二轮面试

这一轮也不是纯粹的技术面试了,面试官还会介绍一些其他信息

  1. 介绍一下职业规划
  2. 介绍一下之前公司的离职原因
  3. 之前面试了哪些公司,进入了哪些阶段
  4. 白纸写一个字符串包含的程序,其实是kmp算法