精华内容
下载资源
问答
  • Java 后台开发实习经历

    千次阅读 2019-04-20 20:45:31
    索性就把这几天实习经历整理记录下来。 2019.03.27(day1) 入职培训 申请各种公司账号 认识同事 配置IDEA环境 在禅道上拆解任务 学习状态机 学习观察者模式 学习UML 学习事件驱动 day1学习笔记 ...

    不知不觉已经实习有一段时间了,主管让我自己先想想成长计划。索性就把这几天实习的经历整理记录下来。

    2019.03.27(day1)

    1. 入职培训
    2. 申请各种公司账号
    3. 认识同事
    4. 配置IDEA环境
    5. 在禅道上拆解任务
    6. 学习状态机
    7. 学习观察者模式
    8. 学习UML
    9. 学习事件驱动

    day1学习笔记

    在禅道上拆解任务

    在禅道上新建任务,估计任务完成的时长、优先级,完成之后做好记录。每天晨会要报告自己昨天做了什么,今天预计做什么。

    状态机

    在学校学了编译原理之后,觉得状态机原理跟自动机差不多啊,学起来也很快。看一两篇文章就弄懂了。基本就是,在当前状态下,满足一定条件或完成什么动作之后,就可以进入下一状态。

    观察者模式

    之前二面被面试官问到设计模式的时候,真的是一脸懵逼。于是回去后趁热打铁学了一下单例模式、工厂模式、适配器模式,不得不说这对我学习观察者模式帮助很大。看几篇博客之后就差不多理解了。
    被观察者和观察者是一对多的关系。观察者会维持一个被观察者列表(一般用 list 实现),观察者把自己注册到该列表中。当被观察者状态发生改变之后,会主动通知列表中的观察者更改后的状态。

    UML

    就是制图语言,学起来挺快的,用几次就得心应手了。不过UML对于设计和看懂别人的设计帮助真的很大。

    事件驱动

    学习这个源于指引人给布置的一个小任务,实现事件驱动异步全量加载数据到缓存中。事件驱动?异步?全量?缓存?单看我都懂,不过揉在一起是个什么东西(?_?)。于是心虚地向指引人请教。指引人非常耐心地跟我讲了一下事件驱动,让我去看看安卓的EventBus

    然后稍微懂了一下。主要就是维持一个事件队列(可以用阻塞队列实现,这样队列空的时候会自己阻塞),EventBus每消费一个事件,就会把这个事件告诉Controller,由它根据事件类型,发放给不同的模块完成事件。

    “事件驱动异步全量加载数据到缓存中”状态图

    事件驱动异步全量加载数据到缓存中,就是实现一个以事件驱动的方式,异步加载数据库的数据到缓存中(好像只是做了扩句。。。)
    先设想了一下 cache 的状态:int、loading、running
    状态转换过程:init状态下,接收到“初始化”事件,切换状态到loading。当数据加载完成后会发送“加载完成”事件到数据总线。在 loading 状态下接收到“加载完成”事件会切换到running 状态并启动定时器,定时发送 reload 事件。在 running 状态下收到 reload 事件会将状态切换到 loading。
    在这里插入图片描述

    2019.03.28(day2)

    1. 画 “事件驱动异步全量加载数据到缓存中”类图
    2. 画 “事件驱动异步全量加载数据到缓存中”时序图
    3. 编程实现 “事件驱动异步全量加载数据到缓存中”

    day2笔记

    在设计的时候走了不少的弯路,最后在指引人的耐心指导下,终于完成了。
    附上寄几的 GitHub:https://github.com/Xyuping/Design-Pattern/tree/master/观察者模式/事件驱动异步全量加载数据到缓存中

    2019.03.30(day3)

    1. 编程实现“事件驱动异步全量加载数据到缓存中”交给指引人审核
    2. 学习单元测试

    day3笔记

    上午先把代码给指引人看了,修改了一些小地方。
    下午开始学习单元测试。稍微看了看白盒、黑盒测试。重点学习单元测试的 Junit。
    附上寄几的 GitHub:https://github.com/Xyuping/Notes/blob/master/单元测试.md

    2019.04.03(day4)

    1. 继续学习Junit
    2. 广告业务流学习
    3. ACM流程图

    day4笔记

    广告业务流

    由于指引人清明要去旅游,赶紧揪住他问了下一个任务。然后他讲了一下公司的广告业务流程,主要的架构,各个架构之间的关系。(据说这个架构理论上可以应用于各种交易场景,不明觉厉)

    ACM(Account Manager)

    账号管理

    管理账号的认证方式以及密码
    

    认证管理

    提供统一的账号认证。支持单点登录。
    

    一开始连单点登录是什么都不知道的我,在小伙伴的帮助下,去了解了一下CAS,(在这里要感谢学校开了密码学的课,对于认证这些还是懂一些的)。总算能稍微看懂指引人还没完成的设计了。

    2019.04.09(day5)

    1. 看ACM类图并修改

    day5笔记

    之前看时序图的时候有个小疑惑,在CAS的设计中,用户访问服务A的时候,如果没有认证,A直接重定向到CA。而指引人的设计,还多了一个W eb-1。当时不晓得为什么要这么做。后来问了他才知道是为了实现前后端的分离。

    因为只做过 servlet+jsp 的项目,对于前后端分离并不了解。原来现在的页面主要是浏览器来渲染,后端只负责把数据给浏览器。所以Web-1只是一个静态页面(html、js…)Web-1Gateway才是后端来处理和返回数据。
    (Mark 一下这里,以后还要深入了解一下)

    2019.04.10(day6)

    1. 下载安装和配置 gradle
    2. 从 GitLab上克隆项目
    3. 下载etcd-v3.3.12-darwin-amd64
    4. 了解 oapi
    5. 了解Netty

    day6笔记

    今天主管指派了几个小bug让我改。于是暂时先放下ACM,开始正式深入了解公司的架构。
    先是手忙脚乱地配了一波环境。
    下载安装 gradle,然后使用 init 脚本让gralde在编译过程中使用私有的maven库 。
    在 USER_HOME/.gradle/ directory下创建init.gradle

    // init.gradle
     
    allprojects {
     
      ext.RepoConfigurator = {
        maven {
          url 'http://xxxx/repository/maven-public/'
        }
        maven {
          url 'http://xxx/nexus/content/groups/public'
        }
      }
       
      buildscript.repositories RepoConfigurator
      repositories RepoConfigurator
    }
    
    

    配置完之后就在GitLab上面克隆项目了。
    在IDEA打开项目的时候,发现,项目真的好大啊(@o@)。然后怀着敬畏的心开始追踪代码。
    然后看到熟悉的EventBus、Controller,总算找到入手点,没那么慌了。不过还是看得很晕。一个下午只堪堪看懂了初始化阶段。(后来反思了一下,其实初始化在一开始可以直接把它当做黑盒,不必了解的太过深入)。
    然后看到Netty 的时候觉得有点眼熟,就顺便去大概了解了一下NIO、Netty
    ps:IDEA的快捷键真心好用啊。

    2019.04.13(day7)

    1. opai 类图、时序图

    day7笔记

    今天还是在了解 oapi,不过要有输出。于是觉得画画类图时序图来帮助理解。一开始画类图和时序图的时候,由于画得太细了,导致效率很低,图也非常臃肿。后来在指引人给我大致讲了整个架构,指出重点之后,我再重新画了主要的类图和时序图。
    不得不说看别人的代码确实能学到很多,也有很多收获。

    1. 如何把设计模式运用在实际开发中。
      单例模式:用了大量的单例模式,例如 EventBus、Controller、State 等等
      观察者模式:eventbus、controller 等等
      工厂模式:在日志那用到
      适配器模式
    2. 对象复用:减少创建对象的消耗
      在类中维持一个对象池(公共静态的队列),可以把用完的对象reset 之后放进池子里,等下次用的时候直接取出来用。(感觉有点像线程池)
    3. 用好public static final int xxx = 数字;
    4. 实现缓存机制。(把一些结果存到缓存里,查询的时候先看有没有命中缓存,这样可以减少查询数据库的操作。类似于cache 和内存。)
    //pool
    public class MessageQueue {
    	private LinkedBlockingQueue<MessageItem> messageQueue = new LinkedBlockingQueue<>();
    	private ConcurrentLinkedQueue<MessageItem> itemPool = new ConcurrentLinkedQueue<>();
    	class MessageItem {
        int eventType;
        OAPIParam param;
      }
    	public void putMessage(int eventType, OAPIParam param) {
        try {
          MessageItem item = retrieveItem();
          item.eventType = eventType;
          item.param = param;
          messageQueue.put(item);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }
    public void eventLoop() {
        while (true) {
            MessageItem item = messageQueue.take();
            transaction = Cat.newTransaction("event", EventType.getDescription(item.eventType));
            observer.handle(item.eventType, item.param);
            //put into idle list for reuse
            item.param = null;
            this.itemPool.add(item);
        }
      }
    	private MessageItem retrieveItem() {
    	    MessageItem item = itemPool.poll();
    	    if (null == item) {
    	      item = new MessageItem();
    	    }
    	    return item;
    	  }
      }
    

    2019.04.17(day8)

    1. 在oapi 中排查接口 bug
    2. 看DMS代码
    3. 了解Mevan

    day8笔记

    排查 bug

    做测试的时候发现别人已经写好测试了QAQ,所以测试的时候主要就是写了个代码把Juint跑起来看看几个重要函数。

    然后启动 etcd,再把别人已经写好的桩启起来,在DMS处debug,运行 oapi。另外装了个 postman 协助测试。
    (此处要万分感谢指引人,没怎么看过 mockito 的我对着桩是一脸懵逼的)
    经过排查之后发现 oapi 应该是没有问题的。(传到DMS的参数是正确的而且符合协议)
    然后就要开始学习DMS了。同样把项目从GitLab上克隆下来。
    在DMS目录下运行两个命令

    git submodule init
    git submodule update
    

    (先 Mark 一下,要抽个时间好好学学 git 才行)
    然后开始看代码(据说这个版本还是用状态机实现的旧版本,马上要被替换掉了。。。先用他来熟悉下大体框架emmm)

    2019.04.18(day9)

    1. 学习mockito
    2. 学习DMS
    3. 尝试排查 bug

    day9笔记

    mockito

    昨天做测试的时候比较吃力,主要还是对打桩、mockito 这些没什么概念。于是向先把 mockito学一下再开始。主要了解了一下基础的部分。
    觉得下面这篇文章写得还不错:https://www.cnblogs.com/wangtj-19/p/5822369.html

    DMS

    向指引人请教了一些问题。觉得自己看代码看得太慢了,主要还是因为对整个流程的不熟悉,以及弄不清楚各个模块之间的数据边界,有时候容易过于深入,不能把某些部分抽象成黑盒。

    排查 bug

    本来想直接依葫芦画瓢,直接启别人的桩。不过指引人的建议是先追踪代码,看看哪里容易出现问题,单独排查。虽然有点懵,不过接下来要好好学学测试了。

    终于打完了。。。以后再回来完善一下叭。。。
    现在要去好好思考接下来的成长计划了。
    每天都要加油鸭~

    展开全文
  • 从一位初学者到现在的开发实习生,不断前进着,跟随时代的脚步在程序的海洋里漂泊,也意识到自己的各种不足,但我还年轻,头还没秃,还是要继续学习.今天就给大家分享一下我的北漂面试经历吧,至于为什么来北京,主要是因为...

    这是我第一次写博客,以前都是查看别人的博客分享学习技术,转眼间我也成为其中一员.从一位初学者到现在的开发实习生,不断前进着,跟随时代的脚步在程序的海洋里漂泊,也意识到自己的各种不足,但我还年轻,头还没秃,还是要继续学习.今天就给大家分享一下我的北漂面试经历吧,至于为什么来北京,主要是因为这边公司多,招的实习生也多,比较厉害的就是京东,软通比较有名的.我的第一家面试是北明,第一次吗,当然比较紧张,但技术也都回答上来了,人事面得也不错,最后就不了而知,听说他们老板不让招实习生,我也就落选了.

    第二家就是亚信,比较有名吧,但他们的实习工资就三千左右,转正率很低,一般20个人只有一个转正的,但还是会有很多人会去,因为项目多,可以锻炼自己,毕业也可以吧亚信当做跳板,再找工作会容易一些.记得当时面试我的是一位女士,开始聊得挺好,最后问她主要工作流程,主要是运维,然后我就凉了,所以面试的时候少问我去公司做什么,实习生总会有些出入,这会让面试官以为你不想来我们公司,然后把你pass掉.

    第三家赢时胜,怎么说这个公司了,就是有钱,面试全部随缘,对底层基础要求高,记得当时是八个人一起群面,问了很多底层的东西,list和数据库方面的,但录取的只有一个人,他只说了一句话,"我来这里是为了挣钱养父母".然后被录取了,所以有时候公司招实习生,也会看你是不是和他们公司,其实就是你抗压能力强不强,学习能力怎么样,责任感有木有.哎,三家没有录取我,已经一个星期过去了,周围的同学手里都有1个到2个offer,讨论要去哪家公司.而我只能在北京的夜里独自行走,手机里放着北京北京,那时候才能体会到汪峰的意境,北漂真难.

    那天夜里回到公寓,老师找我谈了很久,因为就剩下我和第一小组六个人没有工作,说来也是真是缘分,学习我们坐在一起,面试也要共患难,最后我们选择出去合租,继续找工作,有人陪伴北京的夜也就不冷了.

    面试了一个多星期,也掌握一些面试经验,回答问题不能一句话说完,那样你就会跟着面试官节奏走,然后被他带进死胡同出不来了,所以要回答的广一些,把面试官引导到你会的题目上,同时还要突出自己的特点让面试官对你有个印象,也许回去后别人都忘了,就记住了你,那么你复试的机会就会很大,说道复试,一般公司都会有hr和人事面试第一轮,通过就会通知参加复试,复试主要认识和你谈公司和你的福利,还有看你的表达能力,一般说参加复试就比较稳了,但有些公司复试还是面试技术,问的就比较深了,我记得当时九恒星一共有四面,因为他们业务特别多对技术要求高,招人也就比较严格一些.反正我一面就直接把我刷下来了,问我对公司有什么看法,听到这个问题我就知道我凉了,面试我的是运维是公司用来刷面开发人太多的面试官,不到十分钟我就出来了,技术就是问了我jsp九大内置对象,现在想想,实习生运气也要好,九恒星面试完第二天,我拿到了offer,当时非常激动,也就没有继续面试了,直接同意入职,实习生生活正式开启.

    展开全文
  • Java开发实习生面试经历与总结

    千次阅读 2020-01-01 15:34:50
    Java开发实习生面试经历与总结 一、引言——初生牛犊不怕虎 2019年 我是从大二暑假开始,正式进入Java的学习。大二上学期的时候,学校开设了只有11周的Java程序设计课程,我当时也没有对Java产生太大的兴趣,把...

    Java开发实习生面试经历与总结

    更新日期:2020年1月1日

    一、引言——初生牛犊不怕虎

    2019年
    我是从大二暑假开始,正式进入Java的学习。大二上学期的时候,学校开设了只有11周的Java程序设计课程,我当时也没有对Java产生太大的兴趣,把考试应付过了,把课程设计应付过了也就没有再继续深入学习Java了。大二下学期以后,我开始参加学科竞赛,在“中青杯”数学建模竞赛中获得省一等奖,“电工杯”数学建模竞赛获得省二等奖,“高教杯”全国大学生数学建模竞赛获得省三等奖,我那时的想法是,借助自己自学的一些Python知识以及Excel知识,还有信息与计算科学专业打下的数学功底,来为将来成为一名数据分析师做准备。但是,我慢慢觉得数据分析的工作是比较枯燥的,数据清洗的工作会花费挺多的时间,真正建模型和做分析的时间不多,内心的成就感远远不及自己动手编写出一个程序的成就感。在了解了互联网市场的人才需求,综合考虑了自身的条件以后,我在大二暑假开始正式投入Java的学习。我先从Java SE的基础知识开始,跟着视频,以1.5倍数来看,把每个视频的代码都动手敲一遍,遇到有不懂的地方也会去查阅书籍,到了七月底,正式学习完Java SE,确切地说,正式学习完比较基础的Java SE,像多线程、网络编程、反射等知识我都是很快地略过的。然后自己也动手写了一个简单的学生成绩管理系统,它是基于Java Swing的,持久层是利用txt文件,也是当作对Java基础语法的一个小练手:
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述完成这个小项目以后,已经是八月中旬了,我开始投入Java EE的学习,我是一直跟着黑马程序员培训班的Java开发工程师就业班的视频来学习的。当时我觉得我走了挺多弯路,我学了很多较老的技术,如Servlet、JSP等,而且学得很慢,主要是刚刚开始接触Java Web,很多配置也是云里雾里的,很多错误也调试了很久才得以解决。曾经还有段时间花了很多时间在JSP语法的学习上面,没有尽早地接触和理解Spring、SpringMVC、MyBatis框架是比较失误的事情。
    慢慢地到了十月份,计算机网络这门课程有个串口通信的实验,我也运用Java Swing和虚拟串口写了一个串口通信聊天室。
    在这里插入图片描述到了十一月份,计算机网络有一个课程设计是基于TCP/IP协议的Socket通信,这是我接触到的第一个较大的工程。我主要复杂客户端后台的开发以及实时语音模块的客户端服务端的开发
    在这里插入图片描述
    这个注册界面是Web端的,后台我是用原生的Servlet和JSP编写的,前端是用LayUI框架搭建的
    在这里插入图片描述
    聊天主界面,可以实现发送文字、发送文件(断点续传)、聊天信息的保存,其实就是简易版的QQ功能,界面在高仿微信

    在这里插入图片描述还要实时语音的功能,后期我会专门写一遍博客来介绍,也会将代码开源到GitHub上。
    转眼间就到十二月了,我也才开始Spring、SpringMVC和MyBatis框架的学习,我还是跟着哔哩哔哩的视频来学习,目前也只是会使用,很多底层的细节和设计思想也没有深入理解,也自己动手做了一个网站,学生信息管理及选课系统,并部署到了阿里云服务器上。
    可以访问此链接来看到我的项目:http://101.37.13.188:8080/StudentSystemZ/
    体验账号&密码&身份
    admin&123456&管理员
    12345&12345&教师
    201712010329&201712010329&学生
    后端:Spring+SpringMVC+MyBatis+MySQL
    前端:LayUI+Ajax
    功能:管理员:院系、课程、学生信息、教师信息、用户管理,当添加/删除 学生/教师时会将学生学号/教师编号作为系统的用户名和密码及其身份,作为学生/教师登录该系统的登录信息;学生:选课退课、查成绩、查改个人信息;教师:任课、给选其课的学生录入成绩、查改个人信息。
    不足:由于前端能力欠缺,界面设计不够友好;由于时间问题还有一些功能未完善。
    在这里插入图片描述管理员的后台布局
    在这里插入图片描述
    我自认为能做出这个项目就能够在企业中干简单的活了,于是赶紧写了一份简历,在拉勾网上海投了,然后收到了6家公司的面试邀请,其中有两家公司距离太远就没去面试。
    最终打算去面试的公司就是这四家:
    在这里插入图片描述人总是要突破自己的舒适区,及时很多东西不懂,也去努力地拼一把!所谓初生牛犊不怕虎,我能够用SSM开发出第一个框架,就还是有较强的学习能力的。

    二、人生中第一次正式的求职面试——华盈公司

    1.时间:2019年12月31日 10:00
    2.学历背景:华南农业大学(双非)信息与计算科学专业(非科班)
    3.笔试(30分钟)有5道大题,我答得很烂,题目挺简单的:
    第一题:你用过哪些Map类?请写出它们的区别。
    看到这个题目,我还是很有底气的,因为在准备面试前有在牛客网上留意相关的知识点。我只回答到了用过HashMap,了解过Hashtable和TreeMap,区别是:HashMap的键和值可以取null,线程不安全,Hashtable的键值不可以取null,线程安全,TreeMap底层是红黑树实现。
    比较标准的答案是:

    Map体系:
     ---| Map接口 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
    		---| HashMap  采用哈希表(哈希表的底存数据结构是链表数组)实现,所以无序
            ---| TreeMap  可以对健进行排序
     
    ---|Hashtable:
    底层是哈希表数据结构,线程是同步的,不可以存入null键,null值。
    效率较低,被HashMap 替代。
    ---|HashMap:
    底层是哈希表数据结构,线程是不同步的,可以存入null键,null值。
    要保证键的唯一性,需要覆盖hashCode方法,和equals方法。
    ---| LinkedHashMap:
    该子类基于哈希表又融入了链表。可以Map集合进行增删提高效率。
    ---|TreeMap:
    底层是二叉树数据结构。可以对map集合中的键进行排序。需要使用Comparable或者Comparator 进行比较排序。return 0,来判断键的唯一性。
    
    另外还有ConcurrentHashMap,CoucurrentHashMap是线程安全的,采用分段锁机制,减少锁的粒度。 
    

    第二题:描述一个新的任务添加到线程池的过程
    当时我是凭着自己的一点点零星记忆编了上去,因为之前没用过线程池,对线程的知识掌握的程度非常不够。
    比较标准的答案是:
    在这里插入图片描述 这里可以看到有一个任务队列,然后还有一个工作的线程池。这个队列是用来干什么的呢?当我们提交的任务不能被及时执行的时候,可以入队列,等待被执行的。现在对于线程池的提交任务流程做一个简单的图解。主要以cachedThreadPool为例。
    在这里插入图片描述图中所有创建的线程都会被放到线程池的hashset中记录下来。
    1.提交任务首先判断是否是null,如果是null就抛出空指针异常,如果不是执行2。
    2.判断线程池中工作的线程数是否小于核心线程池的大小。如果小于执行 3,如果大于执行4
    3.创建一个线程来执行提交的任务,如果失败重新获取线程池状态,然后执行4,成功就返回
    4.判断线程池的状态是否在运行和尝试向把任务加入等待队列,如果线程池已经关闭或者放入等待队列失败,执行6。如果放入队列成功执行5
    5.因为成功的入队了,我们需要重新判断线程池的状态,因为在放入队列的过程中线程池的状态可能会发生变化。如果发现线程池的状态不是在运行就将刚才添加的任务从队列中移除,然后执行拒绝策略。如果是在运行状态执行7
    6.尝试创建一个线程来执行任务,如果创建线程失败就执行拒绝策略
    7.判断当前的工作线程数是不是0如果不是就返回,如果是就创建一个线程!
    原文链接
    涉及到多线程的知识,我还是要补一补啊
    第三题:请写出一个单例模式的类
    由于前不久接触了Spring框架,所以我写的答案是:由Spring依赖注入的类默认是单例模式的,例如SqlSessionFactory
    比较标准的答案是:

    
    public class SingleObject {
     
       //创建 SingleObject 的一个对象
       private static SingleObject instance = new SingleObject();
     
       //让构造函数为 private,这样该类就不会被实例化
       private SingleObject(){}
     
       //获取唯一可用的对象
       public static SingleObject getInstance(){
          return instance;
       }
     
       public void showMessage(){
          System.out.println("Hello World!");
       }
    }
    
    
    
    public class SingletonPatternDemo {
       public static void main(String[] args) {
     
          //不合法的构造函数
          //编译时错误:构造函数 SingleObject() 是不可见的
          //SingleObject object = new SingleObject();
     
          //获取唯一可用的对象
          SingleObject object = SingleObject.getInstance();
     
          //显示消息
          object.showMessage();
       }
    }
    
    
    执行程序,输出结果:
    
    Hello World!
    

    还有什么懒汉式、饿汉式的实现方式,后期再慢慢补咯
    详见菜鸟教程——单例模式
    第四题:Redis的数据类型?
    我的回答是:字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等
    答案虽然对了,但是我还没使用过Redis,以后的项目中也需要慢慢用到

    第五题:用过哪些消息队列?使用场景是什么?
    我当时没有做这个题目,因为不会。
    比较正确的答案是:
    消息队列,一般我们会简称它为MQ(Message Queue)
    队列是一种先进先出的数据结构。
    消息队列可以简单理解为:把要传输的数据放在队列中。
    主要特点是异步处理,主要目的是减少请求响应时间和解耦。所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和。使用场景的话,举个例子:假设用户在你的软件中注册,服务端收到用户的注册请求后,它会做这些操作:校验用户名等信息,如果没问题会在数据库中添加一个用户记录如果是用邮箱注册会给你发送一封注册成功的邮件,手机注册则会发送一条短信分析用户的个人信息,以便将来向他推荐一些志同道合的人,或向那些人推荐他发送给用户一个包含操作指南的系统通知等等……但是对于用户来说,注册功能实际只需要第一步,只要服务端将他的账户信息存到数据库中他便可以登录上去做他想做的事情了。至于其他的事情,非要在这一次请求中全部完成么?值得用户浪费时间等你处理这些对他来说无关紧要的事情么?所以实际当第一步做完后,服务端就可以把其他的操作放入对应的消息队列中然后马上返回用户结果,由消息队列异步的进行这些操作。或者还有一种情况,同时有大量用户注册你的软件,在高并发情况下注册请求开始出现一些问题,例如邮件接口承受不住,或是分析信息时的大量计算使cpu满载,这将会出现虽然用户数据记录很快的添加到数据库中了,但是却卡在发邮件或分析信息时的情况,导致请求的响应时间大幅增长,甚至出现超时,这就有点不划算了。面对这种情况一般也是将这些操作放入消息队列(生产者消费者模型),消息队列慢慢的进行处理,同时可以很快的完成注册请求,不会影响用户使用其他功能。所以在软件的正常功能开发中,并不需要去刻意的寻找消息队列的使用场景,而是当出现性能瓶颈时,去查看业务逻辑是否存在可以异步处理的耗时操作,如果存在的话便可以引入消息队列来解决。否则盲目的使用消息队列可能会增加维护和开发的成本却无法得到可观的性能提升,那就得不偿失了。

    4.第一轮就是技术面试
    首先是公司的技术主管来面试我,他先看了下我的笔试答案,问了我一些问题,我比较多都是没有回答上来的,因为我的基础知识太不牢固了,很多知识点都没有掌握。另外他还在我笔试题目的基础上,拓展了一些问题来问:
    1.可以用什么类来替换Hashtable?
    正确答案:ConcurrentHashMap
    2.Redis是用来干什么?
    通常局限点来说,Redis也以消息队列的形式存在,作为内嵌的List存在,满足实时的高并发需求。而通常在一个电商类型的数据处理过程之中,有关商品,热销,推荐排序的队列,通常存放在Redis之中,期间也包扩Storm对于Redis列表的读取和更新。
    Redis的优点
    性能极高 – Redis能支持超过 100K+ 每秒的读写频率。
    丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
    原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
    丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

    3.谈谈你对Spring的认识
    这一点我回答得比较好,因为我想到过既然我的项目中首次使用了Spring,那么面试问到的概率就极大。然后我也把比较标准的答案贴出来,作为今后面试的参考吧:https://blog.csdn.net/zhang150114/article/details/90478753
    这篇博客写得非常详细了,我也会继续研读的。

    4.说说MyBatis?
    这一问我回答的是MyBatis是一个持久层框架,它对查询结果的封装程度好,而且十分轻量,有两种配置方式,一是注解配置,二是xml配置。然后面试官继续追问,你喜欢用什么配置?我回答注解,因为注解比较清晰,比较简单,在单表查询的时候用注解配置比较容易。如果遇到较为复杂的多表查询,我会考虑使用注解。然后面试官继续追问,那如果在一个系统中,简答查询用注解配置,复杂查询用xml配置,你觉得这样好吗?如果是你会怎么做?我说不太好,因为容易混乱,如果是我,我会使用注解配置,提高编写注解的能力和水平,也是可以完成多表查询的。另外,他还追问道,如果你往数据库表中刚刚插入一条用户,怎么查询出来?我回答的方法比较幼稚,我说在表新增一个字段,刚刚插入的用户这个字段设置为new,查询的时候就就只查询字段为new的记录,查询完毕后就把它修改成old,就查询不到了。显然这方法不可行,面试官问我,要是很多用户同时注册呢?我回答不上来了,为了表现出我好学的一面,我问他怎么实现?他说MyBatis有一个功能可以做到,让我回去了解下。
    下面,我给出比较正确的回答:
    对MyBatis的理解:
    https://www.cnblogs.com/lanqi/p/7851552.html
    使用XML配置还是注解配置的问题:
    涉及的表字段少,业务简单,所以去用注解简单方便,个人认为mybatis强大之处在于他的动态sql,xml的可维护性高。而且在实际开发中表结构往往很复杂,所以在实际开发中建议大家用xml,即便很简单的业务,这样方便统一,也方便日后的维护修改。而且xml可以用mybatis generator自动生成也很方便。
    原文链接:https://blog.csdn.net/yy119388974
    查询刚刚插入的数据:
    在ybatis的Mapper.xml的insert中设置:useGeneratedKeys=“true” keyProperty=“对象中的属性名”
    https://blog.csdn.net/yt66222199/article/details/83791036

    5.然后问了一下我的项目经历,由于是我独立做的项目,所以也比较熟悉,回答的结果也让他比较满意。
    长舒一口气,技术面终于结束了。面完后就觉得要凉凉。

    5.HR面试
    主要是问了我在大学期间参加了什么社团,成绩怎么样,兴趣爱好如何,如何与他人合作啊等等。然后她们还问了我一个问题,我觉得我回答得不够谨慎,她们问我,可以实习多久,我说五到六个月,暑假不一定会在这继续实习(我内心是想自己可以去大厂实习的),然后她们继续问我心目中的公司规模是怎么样的?我说了互联网大厂,技术氛围要比较好,然后说如果去不了大厂可以选择中小型公司,继续提升自己的能力。面试完后一想,我就觉得我要凉了,既然选择了到他们的公司来面试,这的不应该说想要去更好的互联网公司,而应该把心目中的公司描述成和他们公司一支才可以。另外,一个公司招实习生说希望实习生能够转正的,公司不会这么容易就把培养了这么久的实习生放走,又去招收新的实习生。所以我觉得,今后的面试尽可能回答能够实习到大四,并争取转正。

    6.主管面试
    也问了我挺多问题,主要是考察我的综合能力,我自认为我的综合能力还算可以,就不一一列举了。

    7.面试结果
    当天下午就收到了,果然还是凉了。不过这次面试还是积累了挺多经验,也知道自己那些知识比较薄弱,也开始慢慢地知道面试官问题背后的意图了,希望2020年1月2日、1月3日的三场面试能够被捞上岸吧!不得不说,珠江新城的写字楼真的太豪华了,真的希望以后可以在珠江新城的高级写字楼工作啊啊啊!

    在这里插入图片描述

    在这里插入图片描述

    第一次正式的实习面试,over,继续加油咯!我会继续更新的,直到我找到实习!

    ————————————————————————————————

    更新时间:2020年1月2日

    第二场面试——千牵科技

    1.时间:2020年1月2日
    2.面试准备

    总结了第一场面试后的知识点,粗略阅读了《Java程序员面试宝典》

    3.面试流程
    3.1 笔试(40分钟)

    笔试考得比较基础,主要是一些常见的Java基础知识、Web基础知识以及几道很简单的逻辑题和一道求和道编程题,除了选择题中涉及的排序算法我没有选出来以外,其他的都还好,这也让我意识到我算法方面的薄弱,寒假开始后会开始学习。

    3.2 第一轮面试(HR面)

    笔试完后就是HR面,问的东西也是比较常规。自我介绍她要求我说一些简历上没有的,我回答得还算流畅。然后是问我如何协调学生工作、入党、学习等事情,接着是问我有没有升学、考公的打算等,总而言之,个人经历的问题只要把自己的经历、体会和思考给表达出来就可以了,而且回答的时候要记得分点,想好以后再回答。很顺利地,我就进入到了第二轮技术面试。

    3.3 第二轮面试(技术面)

    面试官很和蔼,浏览了一下我的简历后就开始问我问题了。
    1.关于集合框架
    我就说了Set、Map和List

    展开全文
  • Java开发实习(入职经历

    万次阅读 多人点赞 2018-11-24 15:50:42
    今天周末,在家整理电脑,看着自己辛辛苦苦总结出来的学习记录越来越多,忍不住想要整理出来分享一下。 2018年10月29日 上午10点,开新人入职培训会,刚来到公司不是太清楚该做什么,就没事安装软件配下环境,没...

    今天周末,在家整理电脑,看着自己辛辛苦苦总结出来的学习记录越来越多,忍不住想要整理出来分享一下。

    2018年10月29日

    上午10点,开新人入职培训会,刚来到公司不是太清楚该做什么,就没事安装软件配下环境,没想到开会竟然迟到了,幸亏组长提醒。赶忙去开了会,然后人事部的重新点了一下名字,坐下了。大致讲了规章制度,什么该做,什么不能做,待遇等。。。比公司宣讲的时候多了一点要求,其他,比如福利相比宣讲时一样不少。

    然后,各自回到了自己的岗位,组长让申请一个邮箱,说明以后交流安排任务都是邮箱交流。之后,邮箱很快就收到了一个新手包,打开一看里面各种公司规章制度,代码规范,注释规范等。然后。。就看了一天,把该安装的都装上了。

    2018年10月30日

    第二天,由于制度不多,制度看的也差不多了,于是。。组长给了个svn账号,打开Eclipse发现svn已经配好,可以直接用,就把需要的几个项目下载了下来,看到项目。。有点楞。。。原来在学校写的那些所谓的项目。只不过公司项目里的一个到两个小包罢了。。。。然后。下载下来的是线上项目

    项目启动时tomcat的虚拟目录+nginx
    当时也不懂,只是知道需要把host文件配置一个公司域名用来nginx本地映射把 。。windows系统的 hosts文件映射 加一个 127.0.0.1 域名。

    然后配好之后成功的启动了项目,但是。看着这么大的项目还是感觉头大,然后就。。先自己搭建配置配置。。
    配置ibatis 看了看下面的博文,大致明白了一些
    https://blog.csdn.net/lsx2017/article/details/81274480#创建一个SqlMapConfig.xml文件

    然后不知道怎么找界面的jsp,就问了旁边的小姐姐。。。然后,演示了一遍,大致学会了ctrl+h搜索 指定内容(搜xml里的spring配置),然后Eclipse查找类快捷键 ctrl + shift +r。

    2018年10月31日

    第三天还是看项目,闲着没事就开始胡搞了。。

    maven项目的创建回顾
    setting.xml修改

    1.maven仓库地址:
    	<localRepository>d:/.m2/repository</localRepository>
    2.阿里maven私服:
    	<mirror>
          <id>AliMaven</id>
          <name>aliyun maven</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
          <mirrorOf>central</mirrorOf>        
    	 </mirror>
    3.jdk默认版本(在<profiles>节点内配置):
    	<profile>
        <id>jdk-1.8</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
        </activation>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
        </properties>
    	</profile>	
    
    4.Eclipse -->windows -->properties -->maven -->UserSetting --> (填写maven setting文件的路径)
    5.创建项目: 对应含义
    	Group_Id     .   Artifact_Id
    	com.quaint   .    project
    

    Spring插件的安装回顾

    1. 选择Spring插件版本下载到本地
      http://spring.io/tools3/sts/legacy
    2. Help --> install New soft…
      点击add,之后输上插件的名字,我输入的是spring,接着点击archive…找到刚才下载的安装包.点击ok,然后只安装后缀是Spring IDE的4个 Finish

    ssi项目理解

    点击超链接 --> http://..com:80/cdel_flat/course/view.do?op=init
    跳转cdel
    _flat/course/view.do 传参 ?op=init (会找到action内部的方法–>进行业务调用和页面转换)

    .do 被web.xml 里配置的filter 过滤

    1. 字符集过滤 实现的类为:com.chnedu.plat.rad.filter.SetCharacterEncodingFilter

    2. 判断参数过滤 实现的类为: com.chnedu.plat.rad.filter.AjaxAuthenticationFilter

    3. ctrl+h 在 xml文件中搜索 course/view 找到 关于该路径的配置信息
      在spring.xml找action类(ctrl+shift+r快速搜索该类)
      struts.xml 找 跳转的页面(ctrl+shift+r快速搜索该类)

    4. 配置文件需要在 web.xml中引入 以便启动时加载 3中的配置文件

    2018年11月1日

    这是第四天了,项目熟悉的差不多了,分配了一个增删改查的小任务,然后告诉我,什么都要手动敲,不要自动生成。。可能是让我练习基础把。
    然后就试着写了这个小功能,划水了两天哈哈。。。然后这周就没有了,后面可能就没什么感悟了,直接发记录了。不是大公司的话一般第一周都是这个流程的把。熟悉完公司规章制度,就立马让你赶紧熟悉项目上手了,哈哈。总之呢,能提升自己就提升自己吧,既然走了it这条路,就要抱着终生学习的觉悟。

    2018年11月2日

    嗯?还要写吗。。昨天11号不是说今天也划水划过去了嘛。。嗯,算了,在这补充一下把。。周六周日是双休。哈哈。。发现了一个比较好的ssm框架搭建
    地址:idea通过maven搭建ssm

    展开全文
  • Java开发实习生面试—附简历以及面试题

    千次阅读 多人点赞 2019-12-06 19:15:51
    面的是 Java开发实习生。 前些天注册了BOSS直聘,简单填了下资料。(其实还没准备找实习,就是上去看看行情~) 结果过了几天,(12月29号,星期五下午) ,突然有个招Java开发实习生的公司问我要简历。 (其实当时...
  • 今天参加先进数通公司在石家庄的项目组的面试,也算是第一次参加正式的面试吧,自我感觉不好,有点小紧张,有些问题刚出了门,就想起来了,面试的时候很尴尬,很多不会的,估计是没希望。不过面试官小姐姐很和蔼,问...
  • 既然步入了Java开发这个坑,就要励志成为这方面的大神,努力成为公司里面数一数二的开发者。 入职实习1个月,特此记录开发的成长学习心得。我的经历希望帮助你我。持续更新。。。 ===============================...
  • Java软件开发实习报告

    2018-03-29 08:35:16
    实习报告是作为专业人员在实习期间进行书写的对于实习期间个人工作学习经历及其个人思想和能力提高情况进行描述的文本。属于应用写作的重要文体之一。针对工作的主客观条件、有利和不利条件以及工作的环境和基础等...
  • Java开发实习面试总结(49分钟)

    千次阅读 多人点赞 2019-06-13 17:55:53
    在这里记录总结一下第一次面试经历。 前段时间投的简历,这两天准备期末考试(怂,就靠这两冲刺那。。),把面试的事搁置了,昨天下午HR突然打电话来直接要求技术面试,然后我只能说不方便了。。。明天十一点可以吗...
  • Java 实习面试经历(一)

    千次阅读 2018-03-28 15:35:38
    背景介绍本人普通二本大三学生,因为大三下学期有三天的空闲时间,于是在招聘软件上投了简历,想找 Java 开发相关的实习岗位。今天进行了两场面试,一家算中小型的(大概一百几号人)互联网公司和一家五人左右的外包...
  • 这个星期二被公司派到了贵州,跟着师兄出差,此次的目的主要在于熟悉我加入那个部门的业务,和练习一写开发上面的技术。 确实抱着又激动又恐惧的心情,自己也从来没有经历过。中午到成都东站坐了4个多小时的高铁到...
  • 第二次去了天河员村那边,新三板的公司果然高大上,开发直接占一层楼不用走电梯,面试题有Java基础,SQL,数据库,算法,总的来说考的范围偏广,面试官也很好,公司是用Orcle的,而且没有使用DAO框架 第三次去了黄...
  • 一面:(电话)浏览器发出一个请求所经历的过程ArrayList,LinkedList区别hashMap实现原理,是否线程安全,ConcurrentHashMap实现原理Spring mvc 原理,请求处理流程IOCAOP,实现aop的方式及区别分布式锁实现并发处理...
  • 第一篇 Java工程师实习报告3000 2016java工程师实习报告 java工程师实习报告为大家整理java软件...java工程师实习报告 一实习目的 进一步了解java开发的相关知识掌握java开发的基本技术丰富java开发的实战经验学习SQL的
  • 欢聚时代多玩YYJava实习经历

    千次阅读 2016-11-01 18:44:13
    没有监控,可自由选择开发工具和环境(我自己电脑装了Ubuntu)。 -‌ 我的办公电脑配置:I5+16G+1T+Ubuntu,配双显示器,键盘鼠标,耳机的质量也过得去。 ‌- 网络自由,Google,YouTube所有被墙网站都可以访问。 ‌- ...
  • 自我介绍,介绍专业,学什么课,啥时候开始实习的,啥时候开始学的java,大学都干了啥 arrayList和LinkedList区别,性能,使用场景 cookie 和session的区别,安全性 http和https的区别,如何保证安全 cors涉及osi哪...
  • 终于收到阿里云Java研发实习的录用意向书,可以说这是本次春招真正意义上的第一个offer,大概也会是最后一个offer了吧,本人渣渣211本科菜鸡一枚,能够收到阿里的录用意向书纯属侥幸,为感谢广大牛油的贡献,特放出...
  • 又到了同学们找实习的季节,回顾下之前找实习的面试经历。 1.自我介绍,问了下在校成绩,为何跨专业考研,有过多少开发经验。 2.项目经历,业务逻辑,这里问的比较细,为什么这样做,这样做的好处是什么。写了三个...
  • 3、讲讲自己实习经历最深的一次?实习团队氛围?刚进公司有压力吗? 4、算法用的多吗?自己平时怎么学习的?最大的挑战? 5、写代码(剑指offer):平衡二叉树? 6、tcp / udp? 7、操作系统:调
  • 以下开始我的每一天的实习经历,以及所积累的知识。程序基础较为小白,做的是java开发搬砖岗位!!!(如有不适敬请谅解!!!) 第一天的任务: 1 熟悉 mac os 系统 2 安装自己需要的软件, qq , 微信, chrome ,...
  • Java软件开发实习生面试题总结

    千次阅读 2017-07-26 11:18:34
    我今天开始找实习,之前一直在做项目,主要记录下自己的面试经历和面试遇到的问题 1,第一次面试(58到家)  这次面试我是想试试水的,因为最近一直在忙着做项目,没怎么复习。 一面  1,做下自我介绍  2,...
  • 1.看你简历上面有项目经历,挑一个拿手的讲讲? 我讲了项目的整体架构,和负责流程,功能实现等. 2.关于线程池的了解? 3.线程池的参数等? 4.线程进入线程池的执行流程? 5.请求接受springmvc如何处理? 6.问了mysql...
  • 实习经历

    2021-03-09 15:15:58
    java 实习经历 花费10分钟讲述一下我的实习经历。。 我是21届院校毕业生,校名不够出名,在校招的时候肯定也会损失很多机会,从20年10月左右就开始投简历了,因为是校企专业,培训时间4个月,从7月到11月。 第一段...
  • Java第一次实习面试经历

    千次阅读 2018-04-04 14:38:40
    本人是普通二本大学的大三在校生,自学的方向是Java后端开发。校招的时候,投了一家公司的简历。虽然是一家小公司,但效率挺快的,第二天就通知我去面试了;下面我来说说我的经历。面试时间是:2018/3/22这家公司是...
  • 大三程序员实习面试经历Java

    万次阅读 多人点赞 2019-05-06 13:43:40
    暑假该去实习了,网上搜罗了一些前辈们比较有含金量的面试经历,五个部分,纯属混剪: Part1 第一次去了广州黄村创业园,面试了创业公司,环境非常好,但是感觉不靠谱才3个人,一个技术,一个HR和总经理,没有...
  • 面试Android开发实习经历

    千次阅读 2015-07-10 19:51:26
    面试时间是在晚上7点半,QQ聊天进行的。 这里我直接说提过的问题吧: 1.先自我介绍一下. 2.然后根据你的介绍进行提问(如:你说自己...5.开始问java基础了。 6.对于StringBuilder和StringBuffer的区别? 7.那fina
  • 第一次被面试,好紧张,之前通过学长内推投了一下简历,大概2天...1.面试必有自我介绍(2分钟左右),把自己的学校、专业、求职意向说了一下,说说自己的性格,简要谈了谈自己学习java经历、选择java的原因。 2...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 317
精华内容 126
关键字:

java开发实习经历

java 订阅