导航:首页 > 程序命令 > 问程序员接了一枪

问程序员接了一枪

发布时间:2023-07-19 10:21:04

程序员遇到很难的技术问题是怎样的感觉

昨天刚领一个线上P0级重大事故,持续时间1小时,影响范围全站 !准确的时间点是下午17点开始,具体问题定位且听我下文细细道来。


先说感觉,那感觉真是太刺激了,本来下午五点,昏昏沉沉的,瞬间一个激灵就清醒了(想象一下高中课堂,你在打瞌睡,突然老师走到你面前给你一下子的感觉),原本准备再过一小时吃晚饭了,吃完晚饭再摸鱼到21点就可以下班了呀,别问我为啥到21点,问你就不是程序员!


带着无比紧张且颤抖的心情开始定位问题,先来个错误日志尝尝鲜:




整个事情的发酵是这样的:

1、下午五点开始有少量的慢sql报警,没有人当回事,因为这种事情总发生,虽然大家都知道在实际开发中如何避免慢sql,但是整个团队要想完全避免慢sql却很难;

2、五点十分左右,开始零星有用户反馈指定功能不可用,SLB开始报警,技术开始介入排查;

3、十五分左右,客服部门电话开始爆炸,用户密集反馈指定功能不可用,技术部开始重视;

4、二十分左右,所有服务大面积出现接口无法响应,整体服务不可用;

5、我们一开始定位觉得是MySQL的问题,因为前面有mycat的慢SQL报警,后来定位并不是MySQL,因为MySQL的内存、连接数、流量这些指标都很平稳;

6、最终在五点三十分的时候我们定位到是ES出问题了,因为所有的java服务不可用最终都指向上面的错误日志,bbo提供的服务线程池满了,再有请求进来直接拒绝了,查看这个服务的代码,最终查询的是ES,此时的ES进程已经处于假死状态。


那接下来大家说怎么办?如何快速的恢复线上服务?



重启!


是的,只有重启大法此时是最快的解决办法,你不可能说保留ES事故现场,让我用arthas之类的工具来现场分析jvm内存情况。

然而重启之后服务依旧是不可用,接口还是无法响应, 大家知道这个时候是什么原因吗?为什么重启了ES服务还是不行?


后续继续重启报错bbo日志的相应服务,当这些服务全部重启完毕后,我们的服务终于恢复访问了,这个过程持续了十几分钟,确切的说,直到17点五十多分,我们的所有服务才恢复了访问。


接下来就是事故总结、相关责任人、产生问题的原因、接下来的优化方案,全公司邮件通报!


你说这个难不难?本身并不难,难的是事情紧急且重要,这个时候你慌了啊,乱手乱脚的,大家你一言我一语的,如何冷静提取有效信息然后尽可能快的解决生产的重大故障才是最难的!


最后,当一切都恢复平静的时候,你会发现:“卧槽,好累啊!”。

虚脱的感觉!

最后祝大家程序员节日快乐,今年可是程序员的本命年哦



2020 = 1024 + 996 = 404 + 404 + 404 + 404

这种感觉能难受,很压抑。

技术难题,对于程序员来说,是经常有的事,关键是如何面对吧。

说下我的事情,虽然也会写点代码,但并不是以此为正业,所以对于真正的程序员来说,可能说法会有点偏颇。

遇到难题时,一般都在网上搜索解决方法,一般来说,都有很优秀的程序员分享他的劳动成果,所以一般都能解决问题。但也真正碰到难的问题,一个就是循环的问题,无限极菜单问题,当时都是找了很久,看了很多遍才明白过来,当时自己是几天都不太开心,也不太想说话,总是在测试着程序。挺烦也挺不开心的。只是最后做出来了,心情就好多了。

这是我的一些经历,当然,如果全职程序员,可能压力就更大了。

如何形容这种感觉呢?焦躁,紧张,失落,无助,亚历山大...

再多词可能都描述不清楚。本人在工作中经常遇到难题,有些问题一两个月都搞不定。遇到这种问题,估计只有下面这张图的表情能描述此时此刻的心态了。

程序员遇到的难题其实分为两种,一种是没有办法定位清除的问题,另外一种是定位清除了,但是没办法,或者很难解决的问题。

难定位的问题

所谓难定位的问题,其实就是你根本不知道这个问题是什么。比如系统突然挂掉了,你从现有的信息根本不能确定问题在哪。这个时候你剩下的可能只有满脑子的问号了。


如果系统只挂了一次,后面不再出问题,那就很难找出问题的根源了。不过这样也有好处,那就是问题的影响的程度相对较轻,毕竟不容易出现。所以在软件开发中通常不是什么问题都解决的,因为不是所有问题都能搞清楚是什么问题,谈何解决呢!

难解决的问题

难解决的问题是问题搞清楚了,但是基于现有架构很难,或者没法搞定。遇到这种情况,通常先是很高兴,兴奋,然后就只剩下无奈了。

当然,从技术层面来说并不是完全解决不掉。只是如果要解决需要涉及架构调整或者其它方面的改动,修改调整的内容太多。这种情况下就要考虑利弊得失了。


如果改动太大,可能会引入很多新的问题,可能得不偿失。因此,遇到此类问题可能会采取一些规避方案。

当然,在开发和运营当中遇到各种问题是很正常的,关键是遇到不同的问题采用不同的策略。首先保证的是业务的正常运行,然后是考虑是否需要彻底解决。这样慢慢调整,心理压力会小一些。

作为一个工作多年的老码农,在工作也遇到过一些艰难的技术问题,就以切身体会谈谈对这个问题的看法。

首先需要明确一下,问题是否困难除了取决于问题本身之外,还在于解决问题的人的水平,也许对你很难的问题,在别人看来不过是小菜一碟。明白了这一点,那么这些技术问题也就成了考察程序员水平的试金石,有些人可能会因此气馁,甚至放弃;而有些人则通过解决问题学到了很多新的技术,也让自己进一步成长。

记得多年前看工作中要用到一款开源库,那时候刚学完C++不久,自以为对面向对象了解甚深,然而学习这个库时却是一头雾水,最后在经过泡论坛,然后又认真的学习了面向对象设计模式,后来不但能使用那个库,更重要的是对面向对象编程有了更深的认识!

后来还有很多类似的事情,刚开始时感觉无比困难,但是通过自己的努力,或求助他人、或查阅资料,当最终问题解决时,你会发现自己又牛逼了一些,然后再遇到一些新的问题,如此循环……

其实编程也是一个学习的过程,就如同爬山一样,每一阶段都会有一些山头,只有当你爬上山头才能欣赏美丽的风景,但是当你爬上一座山头的时候,就会发现更高山峰!只有当你爬上最高峰,才能“一览众山小”,可是到那时,你可能会向往地球之外的天地!

很难解决一般就是遇到某些瓶颈了,不同瓶颈的感觉是不一样的,但无非可以归结为下面几类。

成本原因
不让马儿吃草,还想让马跑。这个是有些不太理解互联网的一些领导的错误观念,他们会给你安排一个老旧台式机,想要让你承载几万、几十万并发的秒杀系统,你当然很难解决。
外界的评论可能是,“这帮程序员是吃干饭的么?这系统也太垃圾了!”
老板的评论是,“我这台式机也不少钱呢。”
程序员的评论是,“这抠门老板不会是个傻子吧。哎,再优化优化吧。”

当然,有些情况也是能够理解的,公司明白需要更好的设备,但是由于成本控制,不得不在某些方面节省。但换句话说,设备成本是占不了一个大头的,可能有其他方面的成本更加需要收紧。

如果是因为成本原因,我们的心情可能是无奈,又有些不能施展拳脚的束缚感。


历史 原因
举个例子,系统用了5年了,迭代了N个版本,在面对新的需求的时候,就会出现需求限制于系统的情况,常常会有程序员说,这个实现不了,那个不符合现在系统规则。其中很大一部分是这些年的积累,欠下的技术债造成的。俗话说,大船难调头。

这种情况更多的出现在刚创业之后的几年,由于一开始的快速迭代,追求先把业务流程跑通,先生存再规范,会让一开始的软件开发流程并不那么规范,如果在1-2年内没有进行重构,那么积攒的3-5年的技术债就会慢慢把你压得喘不过气来。

解决这种情况,一是需要时机,给出足够的空间和时间让技术团队重构,二是需要魄力,你得有成功的把握,不能干着干着说不行了,咱们还是回到原来吧。

如果是因为 历史 原因,我们的心情可能是期待和渴望,又有些对现状的无奈。


能力原因
虽然说专家很厉害,但说白了,大部分企业需要的研发人员,还到不了需要专家的级别。所以,一般而言,没有什么技术是攻克不了的。如果真的遇上了,那就说明你的公司已经到达了一个新的层次,从而需要那个层次的人员来解决,可以通过外聘或者顾问的方式,引进新的技术。

如果是因为能力原因,我们的心情虽然有些力不从心,但又为公司在新的台阶而高兴。

不管怎样,程序员是一群追求美好的人,不管是外部限制还是内部限制,不能解决的难题对于技术人员来说总是很憋屈的。

不能着急,慢慢分析,找到问题点,没有解决不了的问题

程序员的技术问题,排除架构师技术选型错误以外,都是程序员的功夫不到家所致。

1,面向网络的程序员会第一时间问度娘,各大社区求助大神。

2,面向源码的程序员会第一时间查看源码实现,查找api文档,思考解决方案。

3,不管技术如何发展,架构如何延伸,不变的是基本功,再先进的组件都是由基础语法书写出来的 。

练武不练功,到老一场空,共勉!

首先说下这个很难的技术定义,个人认为在你知道之外的知识都是很难的,一旦你深入了解其使用方式,原理,甚至阅读了他的源码,你会觉得有的时候会恍然大悟。程序员是一个不断要学习的岗位,就要面临很多从未知到已知技术的时候,每当遇到这样的情况时候,总有种不解决了这个问题,睡不着觉的感觉,心里不踏实,总是想尽各种办法去解决这个问题。甚至可以一直追查这个问题。也许这就是一种执拗吧

我老公最近就遇到一个大石头需要敲碎,我作为一个旁观者,都挺心疼他。

他还在读博,最近遇到的问题是他一个项目上的问题,也跟他的毕业设计相关。他刚读博的时候确定了一个方向,去年开题的时候他觉得这个方向没有什么前景,真的是考虑了好久要不要换,如果不换,就是安稳的毕业,换的话接下来的一年多时间他会很艰难,很多新的问题需要一一克服,最后他决定换了,他说他读博就是为了提高自己,还是想挑战一下。

年前,系统板设计好了,然后最近做好回来了,开始调试,说这个板子跟个石头一样,不工作。本来就是礼拜一到礼拜六待在学校不回来,周日是休息的。现在放假回来都是在啃变压器的东西,早上起的很早,晚上又很晚。真的挺心疼的,他还安慰我说,他又要进步了。挺担心他的身体的,我特别希望时间能快点过去,能顺利毕业。他却不希望,总觉得时间过的太快,没有时间搞研究。

今年的生日愿望,希望他科研顺利,身体 健康 。

以我的从业经历,说说遇到很难的技术问题是什么感觉吧: 兴奋、充满挑战性 。尤其是在开发中遇到了技术难题,很多情况下真有种可遇不可求的感觉。

我认为能遇到技术难题,至少证明这个工作是有价值的。 这种价值体现了两个方面,一是你的工作在整个产品开发中占据重要地位,甚至是核心地位。二是你的认知和经验,仍然有成长的空间。如果你的工作一直没有遇到难题,轻而易举地就解决了一切,那么很可能是你没有机会深入重要的核心部分,或者你的工作性质可替代性很高,简单重复性很高。

分解法。 把技术难题拆分,尽量的单元化、模块化,这样有利于逐步攻破,逐步解决。主要是降低技术难度,寻找真正的难点所在。如果问题无法拆分,就是那么一个点,那么需要逆向思维,可以先把问题扩大,看看涉及面有哪些,然后再缩小范围,锁定关键之处。

刨根法。 把技术难题抽象化,理论化,从根本的源头去解决。很多技术问题,从基础理论的角度去看,其实真的不难,只要你能定位到相关的技术点,困难点,知识点,就很容易进行快速解决。解决的终极办法就是从理论上彻底解决,做到知行统一。

讨论法。 三人行,必有我师。很多情况下,所谓的技术难题,在别人的眼中,也许并不是难题。很多情况下,小组讨论,交换意见,方案互补,就可以解决难题。有些情况下,还需要和供应商一起讨论,主要是补充信息的错漏。经常出现的芯片问题,很多情况下供应商都更加有经验。因为供应商有更多的使用客户,有很多解决问题的经验。最主要的是,芯片是他们设计的,他们更加清楚缘由。

没有绝对的技术难题,有的只是尚未解决的技术难题。

㈡ 前端程序员怎么接私活,流程是怎么样的

怎么说呢,没有什么意义,因为你局限在你们培训的知识里,就算做一两个项目练手也是需要比较长的时间,还不如直接去找外包公司,辛苦是辛苦一点,但是学东西快,你会发现你在学的时候和开发完全是两回事。以前学的时候写的接口和实际开发的时候是的写法完全是不同的,你需要的是开发经验,所以你应该在团队开发中学习开发流程。

㈢ 程序员线上接单靠谱吗哪里可以直接与甲方沟通

程序员线上接单是一种常见的自由职业方式,具有一定的灵活性和自主性。但是,也存在一些风险,如可能遇到骗子、赖账等情况。因此,在接单前应该仔细了解甲方的信誉和资质镇派,签订合同并考虑可行性和风如明险控制等方面。

如果您想直接与甲方沟通,可以通过一些平台来实现。比如,一些自由职业网站和平台,如猪八戒、码市、开源中国等,提供有相关的线上接单服务,可以选择相应的项目进行接单,并通过平台与甲方沟通,以保证项目的安全和可行性。同时,这些网站或平台也提供信用评价机制,可以更好地评估甲方的信誉程度,渣旅告并降低风险。

㈣ 程序员面试经常被提到的问题

java 程序员常用面试题- -

Java程序员面试三十二问

Java程序员面试三十二问
作者:佚名 来自:未知

第一,谈谈final, finally, finalize的区别。

第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以

implements(实现)interface(接口)?

第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

第四,&和&&的区别。

第五,HashMap和Hashtable的区别。

第六,Collection 和 Collections的区别。

第七,什么时候用assert.

第八,GC是什么? 为什么要有GC?

第九,String s = new String("xyz");创建了几个String Object?

第十,Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

第十二,sleep() 和 wait() 有什么区别?

第十三,Java有没有goto?

第十四,数组有没有length()这个方法? String有没有length()这个方法?

第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()?

它们有何区别?

第十七,给我一个你最常见到的runtime exception.

第十八,error和exception有什么区别?

第十九,List, Set, Map是否继承自Collection接口?

第二十,abstract class和interface有什么区别?

第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是

synchronized?

第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体

类(concrete class)?

第二十三,启动一个线程是用run()还是start()?

第二十四,构造器Constructor是否可被override?

第二十五,是否可以继承String类?

第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它

方法?

第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行

,什么时候被执行,在return前还是后?

第二十八,编程题: 用最有效率的方法算出2乘以8等于几?

第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对



第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后

的结果,那么这里到底是值传递还是引用传递?

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

第三十二,编程题: 写一个Singleton出来。

以下是答案

第一,谈谈final, finally, finalize的区别。

final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父

类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,

可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能

读取,不可修改。被声明为final的方法也同样只能使用,不能重载finally?再异常处理时提供 finally

块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入

finally 块(如果有的话)。

finalize?方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去

之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是

在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执

行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以

implements(实现)interface(接口)?

匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口

,由另一个内部类实现。

第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套

类最大的不同就在于是否有指向外部的引用上。具体可见http:

//www.frontfree.net/articles/services/view.asp?id=704&page=1

注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2

不能从一个static内部类的一个对象访问一个外部类对象

第四,&和&&的区别。

&是位运算符。&&是布尔逻辑运算符。

第五,HashMap和Hashtable的区别。

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。

Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步

的。

第六,Collection 和 Collections的区别。

Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。

Collection是个java.util下的接口,它是各种集合结构的父接口。

第七,什么时候用assert。

断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为

false,那么系统会报告一个 AssertionError。它用于调试目的:

assert(a > 0); // throws an AssertionError if a <= 0

断言可以有两种形式:

assert Expression1 ;
assert Expression1 : Expression2 ;

Expression1 应该总是产生一个布尔值。
Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。

断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:

javac -source 1.4 Test.java

要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。
要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。

可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。

不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参

数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任

何方式改变程序的状态。

第八,GC是什么? 为什么要有GC? (基础)。

GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收

集,可以调用下面的方法之一:

System.gc()
Runtime.getRuntime().gc()

第九,String s = new String("xyz");创建了几个String Object?

两个对象,一个是"xyx",一个是指向"xyx"的引用对象s。

第十,Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为

s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

第十二,sleep() 和 wait() 有什么区别? 搞线程的最爱

sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。

这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)"醒来"的线程具有更

高的优先级,(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对

象进入等待状态,直到被唤醒或等待时间到。

第十三,Java有没有goto?

Goto?java中的保留字,现在没有在java中使用。

第十四,数组有没有length()这个方法? String有没有length()这个方法?

数组没有length()这个方法,有length的属性。
String有有length()这个方法。

第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类

之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其

父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子

类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或

有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改

变返回值的类型。

第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它

们有何区别?

Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相

等。

equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的

内容和类型相配的话,返回真值。

第十七,给我一个你最常见到的runtime exception。

ArithmeticException, ArrayStoreException, BufferOverflowException,

BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException,

CMMException, , DOMException, EmptyStackException,

IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException,

IllegalStateException, ImagingOpException, IndexOutOfBoundsException,

MissingResourceException, NegativeArraySizeException, NoSuchElementException,

NullPointerException, ProfileDataException, ProviderException, RasterFormatException,

SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException,

UnsupportedOperationException

第十八,error和exception有什么区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能

处理这样的情况。

exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

第十九,List, Set, Map是否继承自Collection接口?

List,Set是

Map不是

第二十,abstract class和interface有什么区别?

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基

本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而

可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象

静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代

之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的

接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量

。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即

将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。

由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类

型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是

synchronized?

都不能

第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类

(concrete class)?

接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类

必须有明确的构造函数。

第二十三,启动一个线程是用run()还是start()?

启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由

JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

第二十四,构造器Constructor是否可被override?

构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

第二十五,是否可以继承String类?

String类是final类故不可以继承。

第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它

方法?

不能,一个对象的一个synchronized方法只能由一个线程访问。

第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行

,什么时候被执行,在return前还是后?

会执行,在return前执行。

第二十八,编程题: 用最有效率的方法算出2乘以8等于几?

有C背景的程序员特别喜欢问这种问题。

2 << 3

第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

不对,有相同的hash code。

第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后

的结果,那么这里到底是值传递还是引用传递?

是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数

的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int

、 short、 char 或者 byte。long,string 都不能作用于swtich。

第三十二,编程题: 写一个Singleton出来。

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

一般Singleton模式通常有几种种形式:

第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,

在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}

第二种形式:

public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}

其他形式:

定义一个类,它的构造函数为private的,所有方法为static的。

一般认为第一种形式要更加安全些

第三十三 Hashtable和HashMap

Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许

还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为

contains方法容易让人引起误解。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,

不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。

Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

㈤ 程序员如何可以接到软件外包项目求大神帮助

关于如何接软件外包,主要思路是主动出击。
关于项目的搜寻,以我们自己的经验,目前有效的方式有这几个:
1、同事和朋友等熟人介绍
这种成功率比较高,因为开发团队和外包方建立了间接的熟人关系,因此在合作讨论、报价、沟通上都会更顺利。
2、外包QQ群
有很多外包QQ群,直接在QQ上搜索就能找到,上面有的项目可以跟进,当然都是僧多肉少。
3、微信的创业群、朋友圈
现在是大众创业、万众创新,通过参加线下创业活动等方式多加入一些微信创业群,并加一些创业者的微信,在微信创业群或朋友圈里面自然会有寻找外包团队的需求。
4、多交朋友、多露脸
前面3种方法,核心就是想方设法多露脸,将朋友弄得多多的。比如之前我们在“罗辑思维”里面曝光过一回,结果4个月之后还有人找我们做外包。
5、外包服务平台
国内的:智城、猪八戒、CSTO、sxsoft。不过价格低的离谱,和行业普遍情况有较大差异。

㈥ 程序员怎么接活

国内的程序员工作辛苦,但收入却一般。这里,小编为广大程序员推荐几个赚外快的方法,希望大家量力而行,防止被骗。

QQ群。雀羡

根据自己的特长,加一些活跃度比较高的QQ群。这些群里经常会有人找外包,大家可以尝试跟他们联系,通过接些小项目赚些外快。

通过朋友介绍私活。

程序员的朋友大多也都在这个行业打拼,可以找靠谱的朋友,让他们帮忙介绍一些私活。这也是赚外快最为常见的途径。

上众包网站。

国内目前有很多众包网站,他们会在网上发布需求及悬赏金额。大家可以在该类网站上寻找适合自己的内容。如果想通过该途径的话,一定要注意对方的可靠度,防止被骗。

开发App。

对于个人开发者,开发app不失为一个好方法。不仅时间宽松,而且可根据自身的能力进行开发,相比较其他几种途径,压力要小很多。在这里,推荐大家开发Android平台上的app。虽然Android市场没有Apple的成熟,但入门成本低,设备易得。如果有很好的点子,app很受欢迎,收入应该也是比较可观的。

做兼职。

对于时间比较多的程序员,可以考虑做些兼职。对于一些小公司或者在校学生,他们经常会有各种需求,而自身又做不了。这时,做些兼职,赚点外快也是不错的选择。

参加编程大赛。

对于一些高端程序员,可以多关注一些企业举办的编程大赛。参加这样的比赛,不仅能提高自身的水平,并且获奖的话,也顷枯拍有不少的现金奖励败团哦!

㈦ 程序员接私活比上班也挣得多,是真得吗可以接哪些私活呢

程序员接私活比上班也挣得多,是真得吗?可以接哪些私活呢?程序员接私活已经是很平常的事情了,并且市面上也有很多靠谱的接私活平台。很多程序员,通过做私活承接项目,将自己的程序能力转化为收入。收入比工资高是真的。

开发邦:特点:服务范围明确,it开发项目垂直度高,可以吸引一些需求明确的客户。该平台还致力于利用互联网软件技术为客户提高效率、降低成本、提高效率和优化管理。

袁急送:平台特点:追求高质量的雇主和工程师,汇聚知名互联网公司的技术、设计和产品巨头,通过实际轮班、远程等方式一对一解决创业问题,提高创业效率。

㈧ 程序员怎么接外包

程序员接外包的方法:

1、通过朋友介绍,这个是比较靠谱的方法,如果能保证质量,可能会有介绍来的单子。

2、通过一些外包平台,现在主要有猪八戒、一品威客、解放号、码客帮、码市、程序员客栈、军刃这几个主流的平台。

3、自有渠道,适合比较大牛的开发者,可以通过搭建自己的网站博客,不断去增加自己的作品去沉淀,同时做好SEO,可以方便客户找到你。

4、自己挖掘,比如通过线下的一些活动或者线上去寻找,例如知乎、QQ群、网络知道啦等一些渠道。

㈨ 程序员这个职业好不好

首先职业不分贵贱高低,但分薪水高低,幸福感高低,程序员这个职业前几年很不错,但是最近几年不行了,各种加班996,奋斗者协议,导致程序员这个职业的幸福感渐渐下降,同时由于资本的减少,互联网企业的岗位渐渐缩水,不如从前资本注入厉害的阶段。

程序员实际上对比同行业职位,并不是很有优势:

  1. 对比产品经理,程序员是干活的,要修改就得修改,薪水还有可能没成品经理高。

  2. 对比测试专员,程序员是干活的,有bug就得修复,薪水还跟人家差不多。

  3. 对比游戏策划,人家下班了,程序员还在干活,薪水还没人家多。

  4. 对比原画师,高端原画师一幅画十几万到几百万,人家休息了,程序员还在写代码。

  5. 对比销售职业,天天打电话看上去很辛苦,很低端,一个月成上几单就破万了薪水,很多程序员还达不到,同时销售下班了,程序员还在工作。

其他:就不一一对比了,程序员的加班和程序员的收入实际上不成正比,同时对比其他同行业的职位,薪水浮动并不大,还干活较多,所以程序员还不算一个高薪职位。

程序员职位并不是高薪,与其他行业基本差不多:

  1. 试问产品经理,ui设计,美工,游戏策划,项目经理,哪个职业在一线城市不是超过8k的,程序员的职位和其他职位的薪水也大致相同,基本一线6-30k,二线4-10k,三线4-8k,其他行业不也是这样吗,醒醒吧!

  2. 程序员如果算上加班工资到15k,那么一个房地产销售一个月卖出去3-5套房子,就达到这个水平了,而且还不用加班。

注:客观思考问题,不要以讹传讹,要有明辨是非的能力,不要听信所谓高薪,以实际思考对比就会有相关的差异。

程序员这个职业好不好:

  1. 喜欢的人会觉得好,不喜欢的人会觉得不好。

  2. 职业不是说好坏的,而是在于能够提升生活质量,加班严重生活质量下降,这样的职业我觉得不好。

注:以上仅个人观点,仅供阅读思考问题,无其他意图,如有受益可以采纳,感谢!

㈩ 很多人觉得程序员岗位不需要沟通能力,实际上是这样吗

并不是的,只是这个岗位需要的沟通能力一般,但你毕竟是在职场当中工作,你要接触领导,你要和其他工作人员合作,所以你就应该学会沟通,礼貌地、明确地表达你的意图。

阅读全文

与问程序员接了一枪相关的资料

热点内容
想在上海租房子什么app好 浏览:184
编译程序各部分是必不可少的吗 浏览:885
编程不超过十行 浏览:763
数电编译器的作用 浏览:337
时间算法与现在有什么区别 浏览:162
7zip解压后没文件夹 浏览:902
为什么安卓送玫瑰ios收不到 浏览:8
美篇文章加密是什么意思 浏览:82
ilasm编译dll 浏览:38
呼吸灯单片机程序 浏览:953
linux域socket 浏览:249
qq分身怎么样才能加密 浏览:456
windows打开linux 浏览:998
新建文件夹为什么不能发送微信 浏览:603
交警app怎么绑定本人几辆车 浏览:989
彩虹六号如何人工服务器 浏览:634
mc服务器地址怎么登入 浏览:558
苹果app怎么扫描二维码下载 浏览:961
css文件在线解压 浏览:156
36岁程序员近况 浏览:285