互联网5年开发管理岗的经验之谈

简介:   工作了这么长时间,终于也可以闲下来分享一下这些年的经验,在这个互联网时代,不能只偷偷学,不输出。  lz是河北人,大学学习的计算机专业,毕业后又加入培训学校学了一段时间,除了工作之外研究的最多的还是如何面试通过,因为也经常跳槽,这些年在面试上还是下了很多功夫的,找时间都分享出来,希望可以帮到各位同僚。

  工作了这么长时间,终于也可以闲下来分享一下这些年的经验,在这个互联网时代,不能只偷偷学,不输出。

  lz是河北人,大学学习的计算机专业,毕业后又加入培训学校学了一段时间,除了工作之外研究的最多的还是如何面试通过,因为也经常跳槽,这些年在面试上还是下了很多功夫的,找时间都分享出来,希望可以帮到各位同僚。

  我先罗列一下收集的问题

  1.10 个线程和 2 个线程的同步代码,哪个更容易写?

  从写代码的角度来说,两者的复杂度是相同的,因为同步代码与线程数量是相互独立的。但是同步策略的选择依赖于线程的数量,因为越多的线程意味着更大的竞争,所以你需要利用同步技术,如锁分离,这要求更复杂的代码和专业知识。

  2.什么是 Busy spin?我们为什么要使用它?

  Busy spin 是一种在不释放 CPU 的基础上等待事件的技术。它经常用于避免丢失 CPU 缓存中的数据(如果线程先暂停,之后在其他CPU上运行就会丢失)。所以,如果你的工作要求低延迟,并且你的线程目前没有任何顺序,这样你就可以通过循环检测队列中的新消息来代替调用 sleep() 或 wait() 方法。它唯一的好处就是你只需等待很短的时间,如几微秒或几纳秒。LMAX 分布式框架是一个高性能线程间通信的库,该库有一个 BusySpinWaitStrategy 类就是基于这个概念实现的,使用 busy spin 循环 EventProcessors 等待屏障。

  3.Java 中怎么获取一份线程 dump 文件?

  在 Linux 下,你可以通过命令 kill -3 PID (Java 进程的进程 ID)来获取 Java 应用的 dump 文件。在 Windows 下,你可以按下 Ctrl + Break 来获取。这样 JVM 就会将线程的 dump 文件打印到标准输出或错误文件中,它可能打印在控制台或者日志文件中,具体位置依赖应用的配置。如果你使用Tomcat。

  4.启动一个线程是调用run()还是start()方法?

  答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM 调度并执行,这并不意味着线程就会立即运行。run()方法是线程启动后要进行回调(callback)的方法。

  5.什么是DAO模式?

  答:DAO(Data Access Object)顾名思义是一个为数据库或其他持久化机制提供了抽象接口的对象,在不暴露底层持久化方案实现细节的前提下提供了各种数据访问操作。在实际的开发中,应该将所有对数据源的访问操作进行抽象化后封装在一个公共API中。用程序设计语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口,在逻辑上该类对应一个特定的数据存储。DAO模式实际上包含了两个模式,一是Data Accessor(数据访问器),二是Data Object(数据对象),前者要解决如何访问数据的问题,而后者要解决的是如何用对象封装数据。

  6.什么是ORM?

  答:对象关系映射(Object-Relational Mapping,简称ORM)是一种为了解决程序的面向对象模型与数据库的关系模型互不匹配问题的技术;简单的说,ORM是通过使用描述对象和数据库之间映射的元数据(在Java中可以用XML或者是注解),将程序中的对象自动持久化到关系数据库中或者将关系数据库表中的行转换成Java对象,其本质上就是将数据从一种形式转换到另外一种形式。

  7.阐述Session加载实体对象的过程。

  答:Session加载实体对象的步骤是:

  ① Session在调用数据库查询功能之前,首先会在一级缓存中通过实体类型和主键进行查找,如果一级缓存查找命中且数据状态合法,则直接返回;

  ② 如果一级缓存没有命中,接下来Session会在当前NonExists记录(相当于一个查询黑名单,如果出现重复的无效查询可以迅速做出判断,从而提升性能)中进行查找,如果NonExists中存在同样的查询条件,则返回null;

  ③ 如果一级缓存查询失败则查询二级缓存,如果二手手游账号购买二级缓存命中则直接返回;

  ④ 如果之前的查询都未命中,则发出SQL语句,如果查询未发现对应记录则将此次查询添加到Session的NonExists中加以记录,并返回null;

  ⑤ 根据映射配置和SQL语句得到ResultSet,并创建对应的实体对象;

  ⑥ 将对象纳入Session(一级缓存)的管理;

  ⑦ 如果有对应的拦截器,则执行拦截器的onLoad方法;

  ⑧ 如果开启并设置了要使用二级缓存,则将数据对象纳入二级缓存;

  ⑨ 返回数据对象。

  8.说说&和&&的区别。

  &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。 &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。 &还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。

  9.在JAVA中如何跳出当前的多重嵌套循环?

  在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。

  10.BIO、NIO、AIO 有什么区别?

  BIO:同步阻塞 IO,就是我们平常使用的传统 IO,服务器的实现模式是一个请求连接一个线程,并发处理能力低,可能造成不必要的线程开销,严重的还将导致服务器内存溢出。

  NIO:同步非阻塞 IO,是传统 IO 的升级,服务器的实现模式是多个请求一个线程,即请求会注册到多路复用器Selector上,多路复用器轮询到连接有IO请求时才启动一个线程处理。

  AIO:异步非阻塞 IO,是 NIO 的升级,也叫 NIO2,服务器的实现模式为多个有效请求一个线程,客户端的IO请求都是由OS先完成再通知服务器应用去启动线程处理(回调)。

  明天继续~~

目录
相关文章
|
自然语言处理 安全 机器人
35 岁实现财务自由,腾讯程序员手握2300万提前退休?
35岁,已经准备好退休了。走之前给年轻人一个参考,到我这个年纪在大厂确实可能会碰到职业发展瓶颈,但并不意味着你们一毕业就去国企公务员是更好的选择。 我不是被辞退,也不是离职就找不到工作,只是懒得打工了,1kw 的房产+1kw的腾讯股票+3百万的现金,不拼学位房不买豪车,勉强够用了。 我知道很多人会说通货膨胀什么的,但我不相信腾讯的股票会跑不赢通胀。 我知道还会有人说找个轻松的工作稳妥点,但我觉得这是浪费生命,995拼了 10 多年就是打算把别人一辈子的钱提前赚完的。 不知道该去哪个行业工作的话, 市值排名,再看看福布斯排行榜,哪个行业出镜率最高就去哪,大佬们吃肉还是会给小老弟们留点汤的。
|
存储 区块链
创客互助公排开发功能丨创客互助公排系统开发技术详细丨创客互助公排系统源码案例模式
 区块头和区块体数据也会被当作输入数据做一次Hash运算,其运算结果会被存储在下一个区块的区块头中,这样任何区块内容的修改都会反映到区块的Hash值上,而区块的Hash值又是下一个区块的输入数据,它又会被当作新区块的数据参与一次新区块的Hash运算,随着时间的推移和交易量的增加,所有的区块会通过保存前一个区块的Hash运算结果的方式组成一条链。
|
存储 JSON 区块链
九星创客系统丨九星创客系统开发(互助公排模式)丨九星创客源码及案例
  区块被增加到区块链之前,并不是所有区块都可以生成区块数据,也不是所有区块数据都能被增加到区块链成为最新的数据,这个过程有一定的门槛,需要筛选出一个值得信任的节点来生成数据,然后由其他节点来验证其生成数据的有效性。这个生产区块的过程会得到数字货币的激励,因此很多节点会加入生产区块的竞争。如果某个节点生产的区块数据得到了其他节点的验证,则其他节点会将最新的区块存储到本地,然后加入下一个数据块的生产竞争,这个过程被称为挖矿,而生成数据的节点被称为矿工。
众筹十万美元搞火箭,搞研发全靠志愿者!这个“草根”航天组织已经开启载人测试
众筹十万美元搞火箭,搞研发全靠志愿者!这个“草根”航天组织已经开启载人测试
180 0
众筹十万美元搞火箭,搞研发全靠志愿者!这个“草根”航天组织已经开启载人测试
|
人工智能 安全 PyTorch
阿里云创新产品团队招聘!一大波岗位呼唤你
收入和情怀,诗和远方,我们都给你。
1487 0
阿里云创新产品团队招聘!一大波岗位呼唤你
|
移动开发 架构师 中间件
疫情之下,蚂蚁产品经理在家办公经验分享
春节过后,蚂蚁金服开启了远程办公的日常,本文蚂蚁产品经理的远程办公感受。
597 0
疫情之下,蚂蚁产品经理在家办公经验分享
怎样才能成为一个优秀的产品经理?,互联网营销
  现在,互联网公司里开始重视产品经理了,这是一个好事。以前互联网谈融资,谈商业模式,谈战略,很少有谈产品的,因为产品可以从国外抄,谁下手快谁就能获得先发优势。现在,互联网里的资本已经不成问题,抄袭速度都一样快了。
1149 0
|
前端开发
想换工作?阿里技术战略部招人啦!
在技术战场上狂奔的你,是否也在期待加入这样一个团队:和一群有情有义的人,用有价值的数据和内容做一些有意义的事。比如阿里巴巴技术战略部(嘿嘿,你猜得没错,就是阿里妹所在的团队)。
2995 0