1.作为一名合格的PHP程序员,应该进行哪些技术储备?
我对各种框架均毫无兴趣,哎。
说一下我的理解1:安全SQL注入,跨站脚本,XSS蠕虫,典型的上传漏洞及其他风险,以及CC攻击的原理和防范,不懂安全的开发工程师一定是不合格的。2:数据库能正确理解数据索引的原理,至少应包括hash索引和btree类索引,知道索引优化的原理和查询效率的分析方法。
这个说上去简单,根据我们的面试情况,未经受我们培训的工程师,能满足这个条件的十不及一。当然,北上广大公司多,可能会好一些。
知道关系型数据库和key-value数据库,以及内存数据库的各自优缺点和适用场景,可以根据具体业务诉求选择合适的数据存储模式。 有人会说,这不是DBA的活么?我一直觉得开发工程师和DBA压根就不应该区分出来,也许我有点偏执吧,不过我们公司基本上都要求开发工程师来兼任这一工作了。
3:调试和测试的能力这个虚一点,只说几个场景。 遇到各类型错误输出的显性bug,知道通过搜索获得辅助资料,并解决之。
遇到结果与期望不一致的隐形bug,诸如数据逻辑错误或者一些判断分支错误的问题,知道设计断点和输出中间数据来逐步定位问题。在完成较大的工作任务时,知道每个步骤环节需要独立的测试,而不是笼统弄到一起才想到需要测试。
在业务诉求需要满足较高访问规模或公开暴露于外网有可能导致CC攻击时,知道提前做压力测试并给出性能指标。
2.开发Java系统程序员要注意的基本知识有哪些
问题一:我声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。
这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。
我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。 所以,如果在刚才那句语句后面,如果再运行一句: String string = s; 我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。
问题二:"=="和equals方法究竟有什么区别? ==操作符专门用来比较变量的值是否相等。比较好理解的一点是: int a=10; int b=10; 则a==b将是true。
但不好理解的地方是: String a=new String("foo"); String b=new String("foo"); 则a==b将返回false。 根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。
a和b都使用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是 false。
诚然,a和b所指的对象,它们的内容都是"foo",应该是“相等”,但是==操作符并不涉及到对象内容的比较。 对象内容的比较,正是equals方法做的事。
看一下Object对象的equals方法是如何实现的: boolean equals(Object o){ return this==o; } Object 对象默认使用了==操作符。 所以如果你自创的类没有覆盖equals方法,那你的类使用equals和使用==会得到同样的结果。
同样也可以看出, Object的equals方法没有达到equals方法应该达到的目标:比较两个对象内容是否相等。因为答案应该由类的创建者决定,所以Object把这个任务留给了类的创建者。
看一下一个极端的类: Class Monster{ private String content; 。
boolean equals(Object another){ return true;} } 我覆盖了equals方法。
这个实现会导致无论Monster实例内容如何,它们之间的比较永远返回true。 所以当你是用equals方法判断对象的内容是否相等,请不要想当然。
因为可能你认为相等,而这个类的作者不这样认为,而类的equals方法的实现是由他掌握的。如果你需要使用equals方法,或者使用任何基于散列码的集合(HashSet,HashMap,HashTable),请察看一下java doc以确认这个类的equals逻辑是如何实现的。
3.一个程序员最初入门要学什么来做基础,之后又应该怎样去提升自已
1、首先要明确自己的学习目的,为什么要学习编程。如果是要考级,那么建议学VB,因为它语句比较简单,易上手;如果是真的要掌握一项技术搞研发之用,那么建议学习C++或Java,因为它们语句功能很强大,虽然难度大一点但很实用;
2、选择自己要学习语言种类,如VB,C++,Java等
3、最好找一个辅导班配合书本同步学习,因为程序的问题如果自己只是看书的话很难理解,有前辈指点会有事半功倍的效果;
4、语句和循环是最基本的结构,所以无论学习任何语言都要把它们掌握好,这是在学习过程中一定要注意的;
5、一定要多上机操作。程序是抽象的,有时看程序看的懂,但自己去编却不一定能编的出来;而有时候虽然程序没看懂,但如果经常着手去编,就会非常熟悉该程序用的时候应该怎么去处理,时间久了自然就理解了;
6、有了一点的操作基础以后,就要去背一些简单的语句体了,这些小的语句在你以后编的大程序里是基础的基础
7、最后就是独立编程了,看到一个编程要求之后,首先要在脑中有一个大体的轮廓,独立构思,不要看参考揭示,只有这样才可以达到真正的训练目的,才可以一步步地把思路培养出来
总之呢,学习编程一定要树立信心,首先从思想上就不要去害怕它,只有以此为前提,才可以学的更好。
最后,就祝你学业有成吧!
4.毕业生想找PHP程序员的工作
在学校除了一些很牛的同学外 一般都只学了一些基础 现在的php程序员大多都是自学的。
关键是到了企业的学习。 小公司有小公司的好处 大公司有大公司的好处,不管大公司还是小公司既然在招应届毕业生就说明他们知道应届生的情况,公司必然会给一定时间给你学习和成长。
所以企业在招聘应届毕业生的时候并不是看重他现在会些多少 更看重的是他本身的一个可培养性和可塑性。看你对php也还是比较感兴趣 因此在找工作的时候不要以为现在不是很专业就放弃了进入大公司的机会。
加油 早点找到合适的公司。
5.每个程序员都应该了解的知识有哪些
1、明白你会花20%的时间写代码,而80%的时候在维护,所以你要小心编码。
2、建立一个有效的错误报告机制。
3、建立某些途径或系统,让用户可以与你接触,向你提出建议和批评。
4、为你开发的东西形成文档,解释清楚系统是怎么运行的,这样可以让后来的人容易维护你的软件和系统。
5、频繁备份(也可确保你的这些备份功能正常) Ed Lucas 的回答 有一些忠告。你还需要有一个恢复策略,而不只是一个备份策略。
6、使用一个版本控制系统来保存你的代码,如: Subversion 或 Git.
7、别忘了做Acceptance Testing,使用 Selenium 能帮到你。
8、确保你有足够的日志,你可以使用 log4j, log4net 或者 log4r.。如果出了问题,这是可以让你快速找到问题的方式。
9、当你写日志的时候,确保你记录了你捕获了处理和未处理异常。报告和分析日志可以让你知道你网站的问题。
这里有多的东西被省略了,并不是因为那些可能不是有帮助的答案,而是因为那些东西都太细节了,超出了这个问题的范围,因为这本来就是一个Web开发需要了解东西的Overview。
转载请注明出处生活知识网 » php程序员的基础知识